MySQL數據庫用戶權限管理
1、用戶管理
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 用戶名
1.1、創(chuàng)建用戶
方式一:直接使用root用戶在mysql.user中插入記錄(不推薦)
方式二:使用創(chuàng)建用戶的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 | % | +-------+------+
簡化版創(chuàng)建用戶,誰都可以訪問,不需要密碼,不安全
create user user2;
1.2、刪除用戶
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)
1.3、修改用戶密碼
需要使用函數對密碼進行加密password()
方式一:使用專門的修改密碼指令
基本語法:
set password for 用戶 = password(明文密碼); set password for 'user1'@'%' = password(654321); -- mysql5.7后續(xù)版本,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 = '%';2、權限管理
分為三類:
- 數據權限:增刪改查 select update delete insert
- 結構權限:結構操作(表操作) create drop
- 管理權限:權限管理 create user、grant、revoke, 管理員
2.1、授予權限 grant
將權限分配給指定用戶
基本語法:
grant 權限列表 on 數據庫/*.表名/* to 用戶
- 權限列表 使用逗號間隔,all privileges 代表全部權限
- 所有數據庫
*.* - 某個數據庫:
數據庫.* - 單表:
數據庫.表名
-- 分配權限 不需要刷新,馬上生效 grant select on mydatabase.my_student to 'user1'@'%';
2.2、取消權限 revoke
基本語法:
revoke 權限列表 /all privileges on 數據庫/*.表/* from 用戶
-- 回收權限,不需要刷新,馬上生效 revoke all privileges on mydatabase.my_student from 'user1'@'%';
2.3、刷新權限 flush
將操作的具體內容同步到對應的表中
基本語法:
flush privileges;
3、密碼丟失的解決方案
如果忘記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數據庫用戶權限管理的文章就介紹到這了,更多相關MySQL 權限管理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在Mac系統(tǒng)上配置MySQL以及Squel Pro
給大家講述一下如何在MAC蘋果系統(tǒng)上配置MYSQL數據庫以及Squel Pro的方法。2017-11-11
window環(huán)境配置Mysql 5.7.21 windowx64.zip免安裝版教程詳解
這篇文章主要介紹了window環(huán)境配置Mysql 5.7.21 windowx64.zip免安裝版教程詳解,需要的朋友可以參考下2018-02-02
MySQL8.0移除傳統(tǒng)的.frm文件原因及解讀
MySQL 8.0移除傳統(tǒng)的.frm文件,采用基于InnoDB的事務型數據字典,主要解決了元數據不一致、性能優(yōu)化、架構簡化、增強功能支持、兼容性與升級問題,這一變革提高了數據庫的可靠性和性能,為未來的高級功能奠定了基礎2025-03-03
mysql5.5 master-slave(Replication)主從配置
在主機master中對test數據庫進行sql操作,再查看從機test數據庫是否產生同步。2011-07-07
mysql-canal-rabbitmq 安裝部署超詳細教程
這篇文章主要介紹了mysql-canal-rabbitmq 安裝部署超詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03

