在了解mysql的用户管理语句之前,先来了解一下mysql的用户账号格式,即:
username@host
username对应的用户能够通过那个host登录mysql。
host:次mysql用户能够通过哪些客户端主机ip登录当前服务器上的mysql服务。
注:可以使用通配符表示,%和_;192.168.%即表示这个网段的所有主机
MariaDB [(none)]> use mysql Database changed MariaDB [mysql]> select user,host,password from user; +------+-----------------------+----------+ | user | host | password | +------+-----------------------+----------+ | root | localhost | | | root | localhost.localdomain | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | localhost.localdomain | | +------+-----------------------+----------+
2、创建用户
方法一:使用create user命令创建mysql用户;
MariaDB [mysql]> create user 'Batman' identified by 'Robin'; Query OK, 0 rows affected (0.00 sec)
方法二:直接在mysql库的user表中插入记录;这种方法较少使用,而且这种方法在设置了严格的sql-mode以后便无法使用;
MariaDB [mysql]> insert into mysql.user(user,host,password) values('superman','192.168.%.%',password('Super'));
注意:如果当前mysql数据库的sql-mode设置为严格检查(TRADITIONAL),则无法使用上述方法插入数据;显示为
ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value
方法三:在授权数据库的同时,如果对应用户不存在,namemysql将会自动创建对应的用户;
MariaDB [mysql]> grant all on testdb.* to superman identified by 'super'; Query OK, 0 rows affected (0.00 sec)
3、删除用户
通常使用drop命令删除用户或者直接删除mysql.user表中对应的用户记录
方法一:使用delete语句删除mysql.user表中对应的记录,但是会有相关信息残留
MariaDB [mysql]> DELETE FROM mysql.user WHERE user='superman' and host='%'; Query OK, 1 row affected (0.01 sec)
上例中,使用了delete语句删除了user表中的用户对应的记录,但是如果某些数据库的权限以赋给该用户;那么,在mysql.db表中,该用户相应的权限将不会被删除,当管路员再次创建superman用户时则会出现如下错误:
MariaDB [mysql]> CREATE USER 'superman'; ERROR 1396 (HY000): Operation CREATE USER failed for 'superman'@'%'
解决上述问题;
我们可以删除mysql.db表中源“superman@%”用户残留的权限数据后,使用
flush privileges
进行刷新,之后正常创建;
方法二:使用drop user命令删除对应用户;用户与用户对应的所有权限将被删除。
MariaDB [mysql]> DROP USER 'superman'; Query OK, 1 row affected (0.01 sec)
4、重命名用户
可用如下语句重命名账户;
rename user OldName to NewName;
实例:
1 MariaDB [mysql]> select user,host,password from user; 2 +--------+-----------------------+-------------------------------------------+ 3 | user | host | password | 4 +--------+-----------------------+-------------------------------------------+ 5 | root | localhost | | 6 | root | localhost.localdomain | | 7 | root | 127.0.0.1 | | 8 | root | ::1 | | 9 | | localhost | | 10 | | localhost.localdomain | | 11 | Batman | % | *5CEE5F1426974EA6CD9708CB85FF206C98ADF749 | 12 +--------+-----------------------+-------------------------------------------+ 13 7 rows in set (0.00 sec) 14 15 MariaDB [mysql]> rename user Batman to Robin; 16 Query OK, 0 rows affected (0.00 sec) 17 18 MariaDB [mysql]> select user,host,password from user; 19 +-------+-----------------------+-------------------------------------------+ 20 | user | host | password | 21 +-------+-----------------------+-------------------------------------------+ 22 | root | localhost | | 23 | root | localhost.localdomain | | 24 | root | 127.0.0.1 | | 25 | root | ::1 | | 26 | | localhost | | 27 | | localhost.localdomain | | 28 | Robin | % | *5CEE5F1426974EA6CD9708CB85FF206C98ADF749 | 29 +-------+-----------------------+-------------------------------------------+ 30 7 rows in set (0.00 sec)