BLOG
Enjoy when you can, and endure when you must.
MAY 05, 2014/数据库
MySQL用户管理常用命令

用户管理是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)
COMMENTS
LEAVE COMMNT