mysql-账户,密码及权限

一、背景

接触数据库离不开的就是创建账户及授权,好的密码及权限控制能帮助DBA避免许多不必要的麻烦

二、用户创建及密码相关

1.创建用户示例

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'bbb'@'192.168.%' IDENTIFIED BY 'password';

2.授权用户示例

GRANT ALL ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3.密码相关

3.1 修改密码的几种方式

ALTER USER 'user'@'localhost' IDENTIFIED BY 'password';
set password for user@localhost = password('password');
update mysql.user set authentication_string=password('password') where user='user' and host ='localhost';flush privileges;
mysqladmin -u用户名 -p旧密码 password 新密码

3.2 密码过期相关

  • 指定过期时间
# 配置文件
[mysqld]
default_password_lifetime=180
# 在线全局指定
SET GLOBAL default_password_lifetime = 180;
  • 给指定用户确定的密码过期时间
CREATE USER 'user'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'user'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
  • 禁止密码过期
CREATE USER 'user'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'user'@'localhost' PASSWORD EXPIRE NEVER;
  • 跟随默认的全局到期策略
CREATE USER 'user'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'user'@'localhost' PASSWORD EXPIRE DEFAULT;
  • 手动使账户密码过期
ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;

4.账户资源相关

mysql> CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
    ->     WITH MAX_QUERIES_PER_HOUR 20  # 每小时查询次数
    ->          MAX_UPDATES_PER_HOUR 10  # 每小时更改次数
    ->          MAX_CONNECTIONS_PER_HOUR 5  # 每小时链接次数
    ->          MAX_USER_CONNECTIONS 2; # 可以同时连接数据库的数量,为0则不限制

5.更改用户名称

# 这里的名称包括名字和host,更安全修改host的方式
rename user test@'%' to test@'192.168.%';
rename user test@'%' to test_abc@'192.168.%';

三、权限

权限名称作用域意义
ALL [PRIVILEGES]服务器除GRANT OPTION外的所有权限
ALTER允许使用该ALTER TABLE语句来更改表的结构。 ALTER TABLE还需要 CREATE和 INSERT权限。如重命名表
ALTER ROUTINE存储过程和函数允许更改或删除存储过程和函数的语句。
CREATE数据库、表或索引允许创建新数据库和表的语句
CREATE ROUTINE存储过程和函数允许创建存储过程和函数
CREATE TABLESPACE服务器允许创建、更改或删除表空间和日志文件组
CREATE TEMPORARY TABLES允许创建临时表以及对该临时表的任何操作
CREATE USER服务器允许使用ALTER USER,CREATE USER, DROP USER, RENAME USER,和 REVOKE ALL PRIVILEGES语句。
CREATE VIEW视图允许CREATE VIEW
DELETE允许删除表中行数据
DROP数据库、表、视图允许删除数据库、表、视图,删除分区和truncate table也需要drop权限
EVENT数据库允许为事件调度程序来创建、更改、删​​除或显示事件
EXECUTE存储过程和函数允许执行存储过程和函数的语句
FILE服务器LOAD DATA 和 SELECT … INTO OUTFILE语句和 LOAD_FILE()函数在服务器主机上启用读取和写入文件。允许在 MySQL 服务器具有写访问权限的任何目录中创建新文件。可通过secure_file_priv系统变量设置为特定目录.从 MySQL 5.7.17 开始,创建表时指定DATA DIRECTORY 或者 INDEX DIRECTORY也需要file权限
GRANT OPTION数据库,表,存储过程或函数向其他用户授权或者回收权限,注意,这些权限只能是自己所拥有的权限
INDEX允许创建或删除索引的语句
INSERT表或列允许将行插入到数据库的表中。 ANALYZE TABLE, OPTIMIZE TABLE和 REPAIR TABLE 也需要insert权限
LOCK TABLES数据库通过 LOCK TABLES 显示锁定任何你有select权限的表,这样包括写锁,能避免其他用户读取锁定的表
PROCESS服务器有了PROCESS 特权,用户可以访问有关所有线程的信息,甚至是属于其他用户的线程。没有PROCESS 权限,非匿名用户可以访问自己线程的信息,但不能访问其他用户的线程,匿名用户无法访问线程信息,可以使用SHOW PROCESSLIST 语句、mysqladmin processlist 命令和 INFORMATION_SCHEMA.PROCESSLIST 表访问可用的线程信息,还允许使用SHOW ENGINE语句、访问 INFORMATION_SCHEMA InnoDB_开头的表,FILES表
PROXY服务器使一个用户能够冒充或成为另一个用户
REFERENCES数据库或表创建外键约束需要REFERENCES父表的权限
RELOAD服务器FLUSH 语句的使用。使用等同于 FLUSH 操作的 mysqladmin 命令:flush-hosts、flush-logs、flush-privileges、flush-status、flush-tables、flush-threads、refresh 和 reload。reload 命令告诉服务器将授权表重新加载到内存中。 刷新权限是重新加载的同义词。 refresh 命令关闭并重新打开日志文件并刷新所有表。 其他flush-xxx 命令执行类似于refresh 的功能,但更具体,在某些情况下可能更可取。 例如,如果您只想刷新日志文件,flush-logs 是比刷新更好的选择。使用执行各种 FLUSH 操作的 mysqldump 选项:–flush-logs 和 --master-data。RESET 语句的使用。
REPLICATION CLIENT服务器允许使用SHOW MASTER STATUS,SHOW SLAVE STATUS和SHOW BINARY LOGS语句。
REPLICATION SLAVE服务器使帐户能够使用 SHOW SLAVE HOSTS、SHOW RELAYLOG EVENTS 和 SHOW BINLOG EVENTS 语句请求对源服务器上的数据库进行的更新。 使用 mysqlbinlog 选项 --read-from-remote-server (-R) 和 --read-from-remote-master 也需要此权限。 将此权限授予副本服务器用于连接到当前服务器作为其源的帐户。
SELECT表或列查看表的权限
SHOW DATABASES服务器SHOW DATABASE语句的权限 。没有这个权限的帐户只能看到他们有一些权限的数据库,如果服务器是用该–skip-show-database选项启动的,则根本不能使用该语句 。任何拥有任意一个或几个全局权限的用户可以视为拥有该权限
SHOW VIEW视图查看视图
SHUTDOWN服务器启用 SHUTDOWN 语句、mysqladmin 关闭命令和 mysql_shutdown() C API 函数的使用。
SUPER服务器影响以下操作和服务器行为:通过修改全局系统变量来启用服务器配置更改。对于某些系统变量,设置 session 值也需要 SUPER 权限。启用对全局事务特性的更改。使帐户能够启动和停止复制,包括组复制。允许使用 CHANGE MASTER TO 和 CHANGE REPLICATION FILTER 语句。通过 PURGE BINARY LOGS 和 BINLOG 语句启用二进制日志控制。允许在执行视图或存储程序时设置有效的授权 ID。具有此权限的用户可以在视图或存储程序的 DEFINER 属性中指定任何帐户。允许使用 CREATE SERVER、ALTER SERVER 和 DROP SERVER 语句。启用 mysqladmin 调试命令的使用。启用 InnoDB 加密密钥轮换。允许通过 DES_ENCRYPT() 函数读取 DES 密钥文件。启用版本令牌功能的执行。启用对非超级帐户不允许的客户端连接的控制:启用使用 KILL 语句或 mysqladmin kill 命令来终止属于其他帐户的线程。 (一个帐户总是可以杀死自己的线程。)SUPER 客户端连接时,服务器不执行 init_connect 系统变量内容。即使达到了 max_connections 系统变量配置的连接限制,服务器也会接受来自 SUPER 客户端的一个连接。处于离线模式(启用了离线模式)的服务器不会在下一个客户端请求时终止 SUPER 客户端连接,并接受来自 SUPER 客户端的新连接。即使启用了 read_only 系统变量,也可以执行更新。这适用于显式表更新,以及隐式更新表的帐户管理语句(如 GRANT 和 REVOKE)的使用。如果启用了二进制日志记录,您可能还需要 SUPER 权限来创建或更改存储的函数
TRIGGER启用触发器操作。您必须具有此权限才能为表创建、删除、执行或显示该表的触发器。
UPDATE表或列更改行数据
USAGE服务器无特别权限

官网地址: https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_reload
rename user

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值