一、添加用户
使用 CREATE USER 命令
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
PS:
username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
二、授权
使用GRANT命令
GRANT privileges ON databasename.tablename TO 'username'@'host'
PS:
privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;
databasename - 数据库名,
tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
也可以在创建用户跟授权一起
GRANT privileges ON databasename.tablename TO 'username'@'host' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
查看授权
SHOW GRANTS FOR 'username'@'host';
取消授权
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
PS
撤销权限时,允许语句中含有用户未拥有的权限。
三、删除用户
使用 DROP USER命令
DROP USER 'username'@'host';
四、修改用户名
RENAME USER 'username'@'host' TO 'newusername'@'newhost'
五、修改密码
1、使用 ALTER USER命令(文档推荐方式)
ALTER USER 'username' IDENTIFIED BY 'newpassword';
修改当前用户
ALTER USER USER() IDENTIFIED BY 'newpassword';
使密码过期
ALTER USER 'username' IDENTIFIED BY 'newpassword' PASSWORD EXPIRE;
使密码从不过期
ALTER USER 'username' IDENTIFIED BY 'newpassword' PASSWORD EXPIRE NEVER;
按默认设置过期时间
ALTER USER 'username' IDENTIFIED BY 'newpassword' PASSWORD EXPIRE DEFAULT;
指定过期间隔
ALTER USER 'username' IDENTIFIED BY 'newpassword' PASSWORD EXPIRE INTERVAL 90 DAY;
2、使用 SET PASSWORD命令
默认加密
SET PASSWORD FOR 'username' = 'newpassword'
PASSWORD()函数加密
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
使用PASSWORD('auth_string')的方式已经被废弃,在以后的版本会把它移除,所以不建议使用它来修改密码。
密码校验规则
MySql数据库从5.7的版本开始对密码进行了严格的限制,因为他默认安装了一个validate_password的插件,我们也可以将他禁用掉
查看插件列表,找到validate_password,状态若为AVTIVE便是启用状态
SHOW PLUGINS;
我们可以查看它的校验规则
SHOW VARIABLES LIKE 'validate%';
- validate_password_length 8 # 密码的最小长度,此处为8。
- validate_password_mixed_case_count 1 # 至少要包含小写或大写字母的个数,此处为1。
- validate_password_number_count 1 # 至少要包含的数字的个数,此处为1。
- validate_password_policy MEDIUM # 强度等级,其中其值可设置为0、1、2。分别对应:
【0/LOW】:只检查长度。
【1/MEDIUM】:在0等级的基础上多检查数字、大小写、特殊字符。
【2/STRONG】:在1等级的基础上多检查特殊字符字典文件,此处为1。
- validate_password_special_char_count 1 # 至少要包含的个数字符的个数,此处为1。
下面我们来把他禁用掉,在my.cnf文件中修改
[mysqld]
validate_password=off
再次“SHOW PLUGINS” 我们会看到validate_password状态已经为DISABLED,