Mysql_Sql资料 用户和密码管理操作
一.用户管理
显示用户
显示所有用户,root才能查询
select user,host,password from mysql.user;
显示不重复用户
select distinct user from mysql.user;
创建用户
CREATE USER 用户名@'客户端地址' IDENTIFIED BY '密码';
例子:
create user test@'%' identified by '123456';
例子,只读账号:
grant SELECT ON *.* TO 'username'@'%' IDENTIFIED BY "password";
权限列表
all #所有权限
select,update(字段1,字段2)
库名.表名
. #所有库和所有表
客户端地址
192.168.1.% #1网段
% #允许所有
删除用户
DROP USER 用户名@'客户端地址';
操作表方式删除
delete from mysql.user where user=’用户名’ and host=’客户端地址’
例子:
DROP USER 'username'@'host';
授权
grant 权限列表 ON 库名.表名 TO 用户名@'客户端地址';
例子:
如果test用户不存在将会创建
GRANT all ON *.* TO test@'192.168.4.%' IDENTIFIED BY '123456';
例子:
只读用户
grant SELECT ON *.* TO 'read'@'%';
撤销权限
revoke 权限列表 ON 库名.表名 用户名@'客户端地址';
例子:
REVOKE SELECT ON *.* FROM 'pig'@'%';
查询权限
查询当前用户权限
show grants;
查询某用户权限
show grants for 用户名@'客户端地址';
二.设置密码规则
设置规则
这个其实与validate_password_policy的值有关,默认为1,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
如果我们不希望密码设置的那么复杂,需要修改两个全局参数:validate_password_length默认值为8,最小值为4
set global validate_password_policy=0; 只验证长度
set global validate_password_length=4; 修改密码默认长度
用SET PASSWORD命令
配置root密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
用户修改自己密码
SET PASSWORD=PASSWORD('newpass');
用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
更改当前用户密码
ALTER USER USER() IDENTIFIED BY '123456';
用UPDATE直接编辑user表
use mysql;
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
FLUSH PRIVILEGES;
root密码丢失
关闭验证密码
mysqld_safe --skip-grant-tables&
登陆
mysql -u root mysql
重置
UPDATE user SET password=PASSWORD("new password") WHERE user='root';
5.7版本
UPDATE user SET authentication_string=PASSWORD("new password") WHERE user='root';
刷新
FLUSH PRIVILEGES;