本文是对MySQL用户和权限相关命令做一个总结,包含创建用户、用户授权、查询用户授权状态、修改用户密码、修改用户名、删除用户等相关操作命令。

首先使用root用户连接MySQL数据库。

命令:mysql -uroot -p123456

MySQL用户管理

MySQL用户是存储在mysql.user表中,使用show create table mysql.user命令查看表结构。

MySQL5.7默认有root,session,sys 3个默认用户。

创建MySQL用户

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'

参数说明:

  • username - 登录用户名。
  • host - 表示授权用户登录的主机,比如host为localhost即 用户只能在本机登录。
  • password - 表示授权用户登录密码,密码可空。

样例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
mysql> CREATE USER 'dev01'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'dev01'@'127.0.0.1' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

#使用dev01登录mysql
[root@bwg-dc6-01 ~]# mysql -u dev01 -p123456
Server version: 5.7.24 

mysql> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.01 sec)

MySQL用户授权

命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

参数说明:

  • privilege - 表示要为用户授予权限,ALL privileges 表示授权所有权限。
  • databasename - 授权数据库名称,授权所有数据库为:*.*
  • tablename - 授权数据表名,授权数据库下所有数据表:databasename.*

样例:

1.授权dev01用户拥有faka_com数据库所有权限

1
2
mysql> GRANT ALL privileges ON faka_com.* TO 'dev01'@'localhost';
Query OK, 0 rows affected (0.00 sec)

2.授权dev01用户拥有faka_com数据库指定权限

1
2
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON faka_com.* TO 'dev01'@'localhost';
Query OK, 0 rows affected (0.00 sec)

常用的权限(privilege):

权限名权限范围
CREATE创建新数据库和表
DROP删除已有数据库和表
GRANT允许授权给其他用户
ALERT数据表
SELECT数据表查询
INSERT数据表写入
UPDATE数据表更新
DELETE数据表删除
INDEX索引操作
FILE读写MySQL文件

创建MySQL用户并授权

命令:GRANT privileges ON databasename.tablename TO 'username'@'host' identified by 'password';

示例:

1
2
mysql> GRANT ALL PRIVILEGES ON faka_com.* TO 'dev02'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

刷新MySQL用户权限

命令:flush privileges;

说明:为用户授权后,请执行该命令,权限即可生效。

示例:

1
2
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

查看MySQL用户及授权状态

1.mysql用户是存储在mysql.user数据表中,所以可以支持sql语句查询。

1
2
3
4
5
6
7
8
mysql> SELECT User, Host FROM mysql.user WHERE User="dev01";
+-------+-----------+
| User  | Host      |
+-------+-----------+
| dev01 | localhost |
| dev01 | 127.0.0.1 |
+-------+-----------+
2 row in set (0.00 sec)

2.可以通过查询用户授权情况命令查询用户.

命令:show grants for username@host

示例:

1
2
3
4
5
6
7
8
mysql> show grants for dev01@localhost;
+-------------------------------------------------------------+
| Grants for dev01@localhost                                  |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dev01'@'localhost'                   |
| GRANT ALL PRIVILEGES ON `faka_com`.* TO 'dev01'@'localhost' |
+-------------------------------------------------------------+
2 rows in set (0.00 sec)

修改MySQL用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

示例:

1
2
mysql> SET PASSWORD FOR 'dev01'@'localhost' = PASSWORD('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

修改MySQL用户名

命令:RENAME USER 'userame'@'host' TO 'newuser'@'newhost';

示例:

1
2
mysql> rename user 'dev01'@'localhost' TO 'dev001'@'localhost';
Query OK, 0 rows affected (0.00 sec)

删除MySQL用户

命令:DROP USER 'userame'@'host';

示例:

1
2
mysql> drop user 'dev02'@'localhost';
Query OK, 0 rows affected (0.00 sec)