使用者和密碼管理操作
一.使用者管理
顯示使用者
顯示所有使用者,root才能查詢
select user,host,password from mysql.user;
顯示不重複使用者
select distinct user from mysql.user;
刪除空值使用者
delete from mysql.user where 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;