用户管理是MySQL的基本操作之一,为了确保数据库的安全,必须时刻注意用户的增删改以及权限的分配。
从创建用户说起,我们首先来创建一个名为“user1”的用户并设置其密码为“123456”:
MariaDB [mysql]> CREATE USER user1 IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> select host, user from user;
+--------------+--------+
| host | user |
+--------------+--------+
| % | user1 |
| 127.0.0.1 | root |
| ::1 | root |
| danny.fedora | root |
| localhost | root |
+--------------+--------+
5 rows in set (0.00 sec)
从user表中的数据可以看到上面创建的用户,其host字段值为“%”,表示允许从任意IP登录。在创建用户时可以指定其允许的登录位置,如user1@localhost。
用户创建好了,然后是授权数据库/表的操作权限:
MariaDB [mysql]> CREATE DATABASE db1;
Query OK, 1 row affected (0.00 sec)
MariaDB [mysql]> GRANT ALL ON db1.* TO user1;
Query OK, 0 rows affected (0.00 sec)
以上创建了一个新数据库db1并授权user1对其的所有操作权限。把“ALL”改为具体的操作权限就可以赋予用户一个或多个有限的权限,如SELECT、INSERT、UPDATE、DELETE等。
设定权限后需要刷新系统权限表:
MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
如果要修改该用户的密码呢?也很简单:
MariaDB [mysql]> SET PASSWORD FOR user1=password('654321');
Query OK, 0 rows affected (0.00 sec)
当然也可以直接修改表来实现:
MariaDB [mysql]> UPDATE user SET password=password('654321') WHERE user='user1';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
最后,如果需要删除该用户,则使用DROP USER:
MariaDB [(none)]> DROP USER 'user1';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> select host, user from mysql.user;
+--------------+--------+
| host | user |
+--------------+--------+
| 127.0.0.1 | root |
| ::1 | root |
| danny.fedora | root |
| localhost | root |
+--------------+--------+
4 rows in set (0.00 sec)