Mysql用户相关
添加用户
1 | create user 'username'@'host' identified by 'password'; -- 命令 |
- username 用户名
- host 指定用户可以在哪个主机登录,localhost指只能在本地登录,改成%可以在任何一台电脑上登录
- password 密码,可以为空,为空则不需要密码就可以登录
授权
1 | grant privileges on databasename.tablename to 'username'@'host'; -- 命令 |
- privileges 操作权限,如select/insert/update等,为all则表示所有操作权限
- databasename 表示数据库名,可以为*,表示所有数据库
- tablename 表示表名,可以为*,表示所有表
创建用户时授权
1 | grant all privileges on *.* to 'tt'@'%' identified by '123456'; |
必须执行flush privileges
使权限生效
设置与修改用户密码
1 | set password for 'tt'@'%' = '123456'; |
撤销权限
1 | revoke privileges on databasename.tablename from 'username'@'host'; -- 命令 |
具体信息可以使用命令show grants for 'username'@'host'
查看
可能遇到的问题
Your password does not satisfy the current policy requirements
由于mysql5.7默认安装了validate_password这个插件,这个问题与validate_password_policy的值有关。
validate_password_policy有以下取值:
Policy | Tests Performed |
---|---|
0 or LOW |
Length |
1 or MEDIUM |
Length; numeric, lowercase/uppercase, and special characters |
2 or STRONG |
Length; numeric, lowercase/uppercase, and special characters; dictionary file |
默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
有时候,只是为了自己测试,不想密码设置得那么复杂,譬如说,我只想设置root的密码为123456。
必须修改两个全局参数:
首先,修改validate_password_policy参数的值
1 | mysql> set global validate_password_policy = 0; |
这样,判断密码的标准就基于密码的长度了。这个由validate_password_length参数来决定。
1 | select @@validate_password_length; |
validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。