创建用户
create user '用户名'@'%' identified by '密码';
有时你可能会遇到密码不符合要求的错误, 如MySQL 8.0+:
这时需要修改密码以符合规则,或修改密码规则。
密码
查看密码规则
show variables like 'validate_password%';
global参数 | 表示 |
---|---|
validate_password.check_user_name | ON 表示可以将用户名作为密码,OFF时表示不可以 |
validate_password.dictionary_file | 检查密码的字典文件的路径名 |
validate_password.length | 默认为8,限制密码长度的最小字符数 |
validate_password.mixed_case_count | 默认值为1,限制小写字符和大写字符个数 |
validate_password.number_count | 默认值为1,限制数字的个数 |
validate_password.policy | 默认值为1 密码强度等级:{LOW:0, MEDIUM:1, STRONG:2} 0/LOW:只检查长度; 1/MEDIUM:检查长度、数字、大小写、特殊字符; 2/STRONG:检查长度、数字、大小写、特殊字符字典文件 |
validate_password_special_char_count | 默认值为1,限制特殊字符个数 |
修改密码规则
根据上表描述,结合需要修改参数值。
如,我只想它检测密码长度,那么我只需要修改validate_password.policy=low
或validate_password.policy=0
set global validate_password.policy=0;
修改密码
update mysql.user set password=password('新密码') where User="用户名" and Host="用户地址";
flush privileges;
授权
为已有用户授权远程连接
用户地址:
%
表示任何ip都可访问;- 具体的ip地址,表示只允许该ip地址进行远程连接;
localhost
,表示只允许本地连接。
alter user '用户名'@'用户地址' identified by '密码';
如果修改之后还不能访问,试着查看防火墙是否开放MySQL端口。
授权
格式:
grant 权限1,权限2,…权限n on 数据库名.表名 to '用户名'@'用户地址';
权限1,权限2,…权限n代表:select
,insert
,update
,delete
,create
,drop
,index
,alter
,grant
,references
,reload
,shutdown
,process
,file
等14个权限。
当权限1,权限2,…权限n
被all privileges
或者all
代替,表示赋予用户全部权限。
所有表:
grant all privileges on *.* to '用户名'@'用户地址';
特定数据库:
grant all privileges on 数据库名.* to '用户名'@'用户地址';
刷新系统权限表
flush privileges;
删除用户
DELETE FROM user WHERE User='用户名' and Host='用户地址';
# 刷新权限表
flush privileges;
# 删除用户的数据库
drop database jeecnDB;