您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQL數據庫用戶權限如何管理”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL數據庫用戶權限如何管理”文章能幫助大家解決問題。
mysql的用戶信息保存在了mysql.user中:
select * from mysql.user\G *************************** 5. row *************************** Host: localhost User: root Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: Y Shutdown_priv: Y Process_priv: Y File_priv: Y Grant_priv: Y References_priv: Y Index_priv: Y Alter_priv: Y Show_db_priv: Y Super_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Execute_priv: Y Repl_slave_priv: Y Repl_client_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: Y Create_user_priv: Y Event_priv: Y Trigger_priv: Y Create_tablespace_priv: Y ssl_type: ssl_cipher: x509_issuer: x509_subject: max_questions: 0 max_updates: 0 max_connections: 0 max_user_connections: 0 plugin: mysql_native_password authentication_string: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 password_expired: N password_last_changed: 2020-02-05 22:46:27 password_lifetime: NULL account_locked: N Create_role_priv: Y Drop_role_priv: Y Password_reuse_history: NULL Password_reuse_time: NULL Password_require_current: NULL User_attributes: NULL
主要字段:
主機名和用戶名共同組成復合主鍵 Host 主機名,允許訪問的客戶端,*代表所有客戶端都可以訪問 User 用戶名
方式一:直接使用root用戶在mysql.user中插入記錄(不推薦)
方式二:使用創建用戶的SQL指令
基本語法:
create user 用戶 identified by 明文密碼 -- 用戶 用戶名@主機地址 -- 主機地址: '' 或者 %
示例:
create user 'user1'@'%' identified by '123456'; -- 查看mysql.user表中是否存在新用戶 select user, host from mysql.user where user = 'user1'; +-------+------+ | user | host | +-------+------+ | user1 | % | +-------+------+
簡化版創建用戶,誰都可以訪問,不需要密碼,不安全
create user user2;
user和host具有唯一性
基本語法:
drop user 用戶名@host;
示例:
mysql> drop user 'user1'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> select user, host from mysql.user where user = 'user1'; Empty set (0.00 sec)
需要使用函數對密碼進行加密password()
方式一:使用專門的修改密碼指令
基本語法:
set password for 用戶 = password(明文密碼); set password for 'user1'@'%' = password(654321); -- mysql5.7后續版本,8.0可用 alter user 'user1'@'%' identified by '654321';
方式二:使用更新語法
基本語法:
update mysql.user set password = password(明文密碼) where user = '' and host = ''; update mysql.user set password = password('123456') where user = 'user1' and host = '%'; -- 8.0報錯 update mysql.user set authentication_string = password('123456') where user = 'user1' and host = '%';
分為三類:
數據權限:增刪改查 select update delete insert
結構權限:結構操作(表操作) create drop
管理權限:權限管理 create user、grant、revoke, 管理員
將權限分配給指定用戶
基本語法:
grant 權限列表 on 數據庫/*.表名/* to 用戶
權限列表 使用逗號間隔,all privileges 代表全部權限
所有數據庫 *.*
某個數據庫:數據庫.*
單表:數據庫.表名
-- 分配權限 不需要刷新,馬上生效 grant select on mydatabase.my_student to 'user1'@'%';
基本語法:
revoke 權限列表 /all privileges on 數據庫/*.表/* from 用戶
-- 回收權限,不需要刷新,馬上生效 revoke all privileges on mydatabase.my_student from 'user1'@'%';
將操作的具體內容同步到對應的表中
基本語法:
flush privileges;
如果忘記root用戶的密碼
# 停止服務 mysql.server stop; # 停止不了可以直接殺死進程 ps aux|grep mysql kill <pid> # 重新啟動服務,跳過權限 mysqld --skip-grant-tables # 直接無用戶名登錄 mysql
非常危險,任何客戶端不需要任何用戶信息都可以直接登錄,而且是root權限
修改root密碼:
alter user 'root'@'localhost' identified by '123456';
修改完后,關閉mysql服務器,重啟
關于“MySQL數據庫用戶權限如何管理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。