美文网首页
MySQL 5.7 新增默认账号 mysql.session和m

MySQL 5.7 新增默认账号 mysql.session和m

作者: 帕博雷克斯丢丢 | 来源:发表于2018-08-21 20:39 被阅读0次
    MySQL版本:5.7.23

    在闲逛mysql时发现mysql库的user表下有两个账户比较特别:
    mysql.sessionmysql.sys

    mysql> use mysql;
    Database changed
    mysql> show tables;
    +---------------------------+
    | Tables_in_mysql           |
    +---------------------------+
    | columns_priv              |
    | db                        |
    | engine_cost               |
    | event                     |
    | func                      |
    | general_log               |
    | gtid_executed             |
    | help_category             |
    | help_keyword              |
    | help_relation             |
    | help_topic                |
    | innodb_index_stats        |
    | innodb_table_stats        |
    | ndb_binlog_index          |
    | plugin                    |
    | proc                      |
    | procs_priv                |
    | proxies_priv              |
    | server_cost               |
    | servers                   |
    | slave_master_info         |
    | slave_relay_log_info      |
    | slave_worker_info         |
    | slow_log                  |
    | tables_priv               |
    | time_zone                 |
    | time_zone_leap_second     |
    | time_zone_name            |
    | time_zone_transition      |
    | time_zone_transition_type |
    | user                      |
    +---------------------------+
    31 rows in set (0.00 sec)
    

    查一下user表里面都有哪些账户:

    mysql> select user, host from user;
    +---------------+-----------+
    | user          | host      |
    +---------------+-----------+
    | mysql.session | localhost |
    | mysql.sys     | localhost |
    | root          | localhost |
    +---------------+-----------+
    3 rows in set (0.00 sec)
    

    mysql.sys@localhost:
    用于 sys schema中对象的定义。使用 mysql.sys 用户可避免DBA重命名或者删除root用户时发生的问题。该用户已被锁定,客户端无法连接。
    mysql.session@localhost:
    插件内部使用来访问服务器。该用户已被锁定,客户端无法连接。root@localhost:
    这个就是root账号啦!其用于管理。该用户拥有所有权限,可执行任何操作。严格来说,这个账号不应该被保留。rootMySQL的特权账号,这个众所周知,也带来安全隐患。建议将root账号禁用或者删除,新建一个特权账号用于管理。


    在MySQL 5.6以前,我们通过show processlist\G命令查看系统中正在运行的所有进程:

    mysql> show processlist;
    +----+------+-----------+-------+---------+------+----------+------------------+
    | Id | User | Host      | db    | Command | Time | State    | Info             |
    +----+------+-----------+-------+---------+------+----------+------------------+
    |  6 | root | localhost | mysql | Query   |    0 | starting | show processlist |
    +----+------+-----------+-------+---------+------+----------+------------------+
    1 row in set (0.00 sec)
    

    从5.7开始,我们又可以通过sys.session表来查看系统正在运行的所有进程,而且该表中的记录相processlist比较完善:

    mysql> select * from sys.session\G
    *************************** 1. row ***************************
                    thd_id: 31
                   conn_id: 6
                      user: NULL
                        db: mysql
                   command: Query
                     state: Sending data
                      time: 0
         current_statement: select * from sys.session
         statement_latency: 1.79 ms
                  progress: NULL
              lock_latency: 0 ps
             rows_examined: 0
                 rows_sent: 0
             rows_affected: 0
                tmp_tables: 4
           tmp_disk_tables: 1
                 full_scan: YES
            last_statement: NULL
    last_statement_latency: NULL
            current_memory: 0 bytes
                 last_wait: NULL
         last_wait_latency: NULL
                    source: NULL
               trx_latency: NULL
                 trx_state: NULL
            trx_autocommit: NULL
                       pid: 4612
              program_name: mysql
    1 row in set (0.06 sec)
    

    很显然,select * from sys.session能得到更多的信息。


    我这个是用root账户在mysql库下执行的命令,当然你也可以去sys库查看;

    #表太多了,只写出我们要的表
    mysql> use sys;
    Database changed
    mysql> show tables;
    +-----------------------------------------------+
    | Tables_in_sys                                 |
    +-----------------------------------------------+
    |......                                         |
    | processlist                                   |
    |......                                         |
    +-----------------------------------------------+
    

    然后查看该表中的信息:

    #数据行太多了,囧……
    #只显示一行吧
    mysql> select * from processlist\G
    *************************** 1. row ***************************
                    thd_id: 1
                   conn_id: NULL
                      user: sql/main
                        db: NULL
                   command: NULL
                     state: NULL
                      time: 3262
         current_statement: NULL
         statement_latency: NULL
                  progress: NULL
              lock_latency: NULL
             rows_examined: NULL
                 rows_sent: NULL
             rows_affected: NULL
                tmp_tables: NULL
           tmp_disk_tables: NULL
                 full_scan: NO
            last_statement: NULL
    last_statement_latency: NULL
            current_memory: 0 bytes
                 last_wait: NULL
         last_wait_latency: NULL
                    source: NULL
               trx_latency: NULL
                 trx_state: NULL
            trx_autocommit: NULL
                       pid: NULL
              program_name: NULL
    

    mysql> select * from session\G
    *************************** 1. row ***************************
                    thd_id: 31
                   conn_id: 6
                      user: NULL
                        db: sys
                   command: Query
                     state: Sending data
                      time: 0
         current_statement: select * from session
         statement_latency: 1.31 ms
                  progress: NULL
              lock_latency: 0 ps
             rows_examined: 0
                 rows_sent: 0
             rows_affected: 0
                tmp_tables: 4
           tmp_disk_tables: 1
                 full_scan: YES
            last_statement: NULL
    last_statement_latency: NULL
            current_memory: 0 bytes
                 last_wait: NULL
         last_wait_latency: NULL
                    source: NULL
               trx_latency: NULL
                 trx_state: NULL
            trx_autocommit: NULL
                       pid: 4612
              program_name: mysql
    1 row in set (0.05 sec)
    

    文章中部分内容引用自
    http://www.mamicode.com/info-detail-1301870.html
    http://www.dbhelp.net/2017/11/29/mysql-5-7-%E6%96%B0%E5%A2%9E%E9%BB%98%E8%AE%A4%E8%B4%A6%E5%8F%B7-mysql-session%E5%92%8Cmysql-sys.html

    相关文章

      网友评论

          本文标题:MySQL 5.7 新增默认账号 mysql.session和m

          本文链接:https://www.haomeiwen.com/subject/rucsiftx.html