mysql -uroot -p
select host,user from mysql.user;
請不要對黃色箭頭操作,它是MySQL系統自帶的;而紅色箭頭則表示主管理員。藍色箭頭是子用戶,這個是我以前匹配的,現在刪掉,我們重新來。
drop user '用户名'@'主机名'; drop user 'wyy'@'192.168.0.105';
create user '用户名'@'允许那个主机链接' identified by '密码'; create user 'wyy'@'192.168.0.105' identified by 'wyy18222'; 只允许192.168.0.105的主机链接
備註:
Mysql8.0 預設採用caching-sha2-password 加密,有可能舊的客戶端不支持,可改為mysql_native_password;
create user 'test'@'%' identified with mysql_native_password BY '密码';
百分號%;表示任何ip位址都可以連結
create user ‘wyy’@‘192.168.0.105’ identified by ‘wyy18222’;這是一個只能192.168.0.105的連結。
Alter user '用户名'@'主机名' identified by '新密码'; alter user 'wyy'@'192.168.0.105' identified by '123';
給使用者授權所有權限
grant all privileges on *.* to '用户名'@'主机名' with grant option; grant all privileges on *.* to 'wyy'@'192.168.0.105' with grant option;
grant:授權、授予
privileges :權限,特權
第一個星號:表示所有資料庫
第二個星號:表示所有表格
The "with grant option" indicates that the user can grant permissions to other users, but not beyond the permissions granted to themselves.。這個不加也行。
例如:如果wyy只有select、update權限,沒有insert、delete權限,給另一個使用者授權時,只能授予它select、update權限,不能授予insert、delete權限。
給予使用者授權個別權限
all privileges 可換成select,update,insert,delete,drop,create 等操作
grant select,insert,update,delete on *.* to '用户名'@'主机名';
給使用者授權指定權限
授予使用者指定的資料庫權限
grant all privileges on 数据库 . * to 'wyy'@'192.168.0.105'; grant all privileges on xrs . * to 'wyy'@'192.168.0.105'; 将数据库名为xrs的所有权限赋予wyy
給予使用者指定的表格權限
grant all privileges on 数据库 . 指定表名 to 'wyy'@'192.168.0.105'; 将某个数据库下的某个表的权限赋予wyy
注意:
網路上有的直接建立並賦權:
grant all privileges * . * to ‘要創建的用戶’@‘localhost’ identified by ‘自定義密碼’;
我在mysql8試了不行(8版本以下還沒試過),要先建立使用者再進行賦權,不能同時進行
flush privileges;
新設定使用者或更改密碼後需用flush privileges刷新MySQL的系統權限相關表,
否則會出現拒絕存取
還有一種方法,就是重新啟動mysql伺服器,來讓新設定生效。
show grants for 'wyy'@'192.168.0.105';
revoke all privileges on *.* from 'wyy'@'192.168.0.105';
使用者有什麼權限就撤銷什麼權限
#建立使用者:
create user userName@localhost identified with mysql_native_password by 'password' ;(with mysql_native_password 如果沒有這個,Navicat將無法登陸提示:2059 - authentication plugin...錯誤,因為Navicat不支援最新資料庫預設的加密方式);
#授權使用者:
GRANT ALL PRIVILEGES ON databaseName.* TO userName@'ip';(注意这点跟以往数据库都不一样,无需后面跟着IDENTIFIED BY 'password';否则将提示ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'password'' at line 5)
以上是mysql8建立、刪除使用者及授權、消權操作的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!