MySQL 用户与授权

随着机器和使用机器的人员增多,再也不能像从前一样一个 root 走天下了,这就需要经常使用到 mysql 的用户和授权了。在此记录整理,方便今后查找。

1.查看用户权限

1
SHOW GRANTS FOR 'username'@'host';

2.创建用户

1
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Usage

1
2
3
CREATE USER 'liubin'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'liubin'@'127.0.0.1' IDENTIFIED BY '123456';
CREATE USER 'liubin'@'%';

3.授权

1
GRANT privileges ON databasename.tablename TO 'username'@'host'

Usage

1
2
GRANT SELECT, INSERT ON test.user TO 'liubin'@'%';
GRANT ALL ON *.* TO 'liubin'@'%';

privileges 是一个用逗号分隔的你想要赋予的 mysql 用户权限的列表。你可以指定的权限可以分为三种类型:

  • 数据库/数据表/数据列权限

    • ALTER: 修改已存在的数据表(例如增加/删除列和索引)。
    • CREATE: 建立新的数据库或数据表。
    • DELETE: 删除表的记录。
    • DROP: 删除数据表或数据库。
    • INDEX: 建立或删除索引。
    • INSERT: 增加表的记录。
    • SELECT: 显示/搜索表的记录。
    • UPDATE: 修改表中已存在的记录。
  • 全局管理MySQL用户权限:

    • FILE: 在MySQL服务器上读写文件。
    • PROCESS: 显示或杀死属于其它用户的服务线程。
    • RELOAD: 重载访问控制表,刷新日志等。
    • SHUTDOWN: 关闭MySQL服务。
  • 特别的权限:

    • ALL: 允许做任何事(和root一样)。
    • USAGE: 只允许登录(其它什么也不允许做)。

4.设置与更改用户密码

1
2
3
SET PASSWORD FOR 'username'@'host' = PASSWORD("newpassword");

SET PASSWORD = PASSWORD("newpassword");/* 修改当前登陆用户 */

Note:

mysql 新设置用户或更改密码后需用

1
FLUSH PRIVILEGES;

刷新 mysql 的系统权限相关表,否则会出现拒绝访问;还有一种方法,就是重新启动 mysql 服务器,来使新设置生效。

5.撤销用户权限

1
REVOKE privilege ON databasename.tablename FROM 'username'@'host';

privilege, databasename, tablename:同授权部分

Note:

假如你在给用户'liubin'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'liubin'@'%;',则在使用REVOKE SELECT ON *.* FROM 'liubin'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作。相反,如果授权使用的是GRANT SELECT ON *.* TO 'liubin'@'%';REVOKE SELECT ON test.user FROM 'liubin'@'%';命令也不能撤销该用户对test数据库中user表的Select权限。

具体信息可以用命令SHOW GRANTS FOR 'liubin'@'%';查看。

6.删除用户

1
DROP USER 'username'@'host';

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!