2021年4月

一. 用户
1、创建用户(这里的用户不可使用,在分配权限后可正常登陆)
只创建用户
CREATE USER username IDENTIFIED BY 'password';
创建用户的同时授予权限
GRANT ALL ON databasename.* TO username@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

2、删除用户
DROP USER username@localhost;

3、修改用户密码

命令修改
SET PASSWORD FOR username@localhost = password('newpassword');
FLUSH PRIVILEGES;

4、解决忘记root密码
关闭 mysql 服务
进入mysql/bin 目录
输入mysqld --skip-grant-tables

  • --skip-grant-tables :启动MySQL服务的时候跳过权限表认证
    打开新终端,进入mysql/bin 目录
    打开mysql命令行
    use mysql;
    UPDATE USER SET password=password('newpassword') WHERE user='username' and host='localhost';
    FLUSH PRIVILEGES;

二. 权限
!!!注意:在每次执行完分配权限命令后,需要刷新权限
FLUSH PRIVILEGES;
1 在多个层次上授予权限

服务器
GRANT ALL PRIVILEGES ON . TO 'username'@'localhost';
数据库
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'localhost';
数据表
GRANT ALL PRIVILEGES ON databasename.tablename TO 'username'@'localhost';
数据表的列
GRANT SELECT(id, col1, col2) ON databasename.tablename TO 'username'@'localhost';
存储过程
GRANT EXECUTE ON PROCEDURE databasename.tablename TO 'username'@'localhost';
函数
GRANT EXECUTE ON FUNCTION databasename.tablename TO 'username'@'localhost';

2 对不同用户角色的授权(权限可自选,这里只是参考)

为普通用户添加权限
GRANT SELECT, INSERT, UPDATE, DELETE ON databasename.* TO 'username'@'%';
为开发者添加权限
GRANT CREATE, ALTER, DROP, REFERENCES ON databasename.* TO 'username'@'192.168.0.%';
为普通 DBA 添加权限
GRANT ALL PRIVILEGES ON databasename.* TO 'username'@'localhost';
为高级 DBA 添加权限
GRANT ALL PRIVILEGES ON . TO 'username'@'localhost';

3 查看授权
SHOW GRANTS FOR username;

4 撤销在所有数据库上的权限
REVOKE ALL PRIVILEGES ON . FROM 'username'@'localhost';

5 命令分析

GRANT:执行命令词,一般为动词
ALL:赋予权限名,参考下面的权限列表
.:前者表示数据库名,后者表示数据表名
databasename.*:表示在databasename中的所有表
databasename.tablename:表示在databasename中的tablename表
'username'@'localhost':前者为用户名,后者为接入的IP
'username'@'%':可以从任何地点接入
'username'@'192.168.1.%' :192.168.1 IP下的局域网都可接入
'username'@'%.website.com':可以从http://website.com接入
'username'@'localhost': 只可以本机登录
localhost 通过UNIXsocket连接,不会被解析为IP地址
127.0.0.1 通过TCP/IP协议连接,只能本机访问
::1 ::1 支持ipv6,等同于ipv4的127.0.0.1
mysql权限表.jpg