您好,登錄后才能下訂單哦!
下面講講關于MySQL的用戶和權限如何管理,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL的用戶和權限如何管理這篇文章你一定會有所受益。
MySQL的用戶賬號: 用戶名@主機
主機格式:
主機名 www.node1.com
IP: 172.16.139.2
172.16.0.0/255.255.255
192.16.%.%
通配符:172.16.%.%
%.node1.com
Mysql賬號的唯一目的就是在用戶連接MySQL云服務器時,進行用戶的登錄認證,而要在登錄后進行一些數據訪問、操作等,還要另外進行授權
MySQL進程在啟動時會讀取以下六個權限表
user:用戶賬號,全局權限
db:庫級別權限
tables_priv:表級別權限
columns_priv:列級別權限
procs_priv:存儲過程與存儲函數相關權限
proxies_priv:代理用戶權限
權限級別: 全局級別 庫 表 列 存儲過程和存儲函數
觸發器:主動數據庫,當執行insert、delete、update時會自動觸發另外自定義的操作;如向user表中插入數據時,定義往log表中插入時間值,往user表中插入數據。
創建一個叫做faker的用戶,密碼為123
>create user faker@'127.0.0.1' identified by '123';
mysql> show grants for faker@'127.0.0.1'; 查看faker在127.0.0.1的權限為usage,只能登陸和做簡 單的查看
+----------------------------------------------+
| Grants for faker@127.0.0.1 |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'faker'@'127.0.0.1'
IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
為用戶授權:
user表中host列的值的意義
% 匹配所有主機
localhost localhost不會被解析成IP地址,直接通過UNIXsocket連接
127.0.0.1 會通過TCP/IP協議連接,并且只能在本機訪問;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
priv_level:
* 所有庫
*.* 所有庫的所有表
test.* test庫下的所有表
test1 test1表
db_name.toutine_name 某個表的存儲過程/存儲函數
設置權限時必須給出以下信息
1,要授予的權限
2,被授予訪問權限的數據庫或表
3,用戶名
grant和revoke可以在幾個層次上控制訪問權限
1,整個云服務器,使用 grant ALL 和revoke ALL (revolve收回權限)
2,整個數據庫,使用on database.*
3,特點表,使用on database.table
4,特定的列
5,特定的存儲過程
grant 命令 on 庫.表 to user;
>grant select, insert, update, delete on testdb.* to faker@’%’
grant 普通數據用戶,查詢、插入、更新、刪除 數據庫中所有表數據的權利。
>grant select on testdb.* to common_user@’%’
>grant insert on testdb.* to common_user@’%’
>grant update on testdb.* to common_user@’%’
>grant delete on testdb.* to common_user@’%’
或者,用一條 MySQL 命令來替代:
>grant select, insert, update, delete on testdb.* to common_user@’%’
grant 數據庫開發人員,創建表、索引、視圖、存儲過程、函數等權限。
grant 創建、修改、刪除 MySQL 數據表結構權限。
>grant create on testdb.* to developer@’192.168.0.%’;
>grant alter on testdb.* to developer@’192.168.0.%’;
>grant drop on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 外鍵權限。
>grant references on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 臨時表權限。
>grant create temporary tables on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 索引權限。
>grant index on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 視圖、查看視圖源代碼 權限。
>grant create view on testdb.* to developer@’192.168.0.%’;
>grant show view on testdb.* to developer@’192.168.0.%’;
最后
>flush privileges;
刷新權限后,可能要重新登錄才生效
刪除用戶
>drop user faker@'127.0.0.1'; 將faker用戶刪除
改用戶名
>rename user faker@'127.0.0.1' to sky@'127.0.0.1';
Query OK, 0 rows affected (0.00 sec)
權限收回
>revoke 'select' on test.my from faker@'127.0.0.1';
收回faker用戶在test庫中my表的select權限
MySQL登錄忘記密碼怎么辦?
[root@node1 ~]# vim /etc/init.d/mysqld
1.找到下面這行
$bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
2.在上面行中加入 --skip-grant-tables(跳過認證)
3.在重啟mysqld服務
4.最后重新登錄不要密碼就可以連接上去
對于以上MySQL的用戶和權限如何管理相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。