MySQL/mariadb知识点——操作篇(1)用户管理

在了解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)
命名

相关文章: