1、通過help檢視grant指令幫助
……
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90;
2、運維人員比較常用的建立使用者的方法是
GRANT ALL ON db1.* TO 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
3、先建立使用者再授權
4、建立使用者并授權
grant指令簡單文法如下
grant all privileges on bdname.* to username@localhost identified by ‘passwd’;
表格說明:
grant
all privileges
on dbname.*
to username@localhost
identified by ‘passwd’
授權指令
對應權限
目标:庫和表
使用者和用戶端主機
使用者密碼
授權使用者solin對solin_utf8庫所有權限:
mysql> grant all privileges on solin_utf8.* to 'solin'@'localhost' identified by'ubuntu';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
5、檢視使用者權限
mysql> show grants for solin@localhost;
+--------------------------------------------------------------------------------------------------------------+
| Grants for solin@localhost |
| GRANT USAGE ON *.* TO 'solin'@'localhost' IDENTIFIED BY PASSWORD '*3CD53EE62F8F7439157DF288B55772A2CA36E60C' |
| GRANT ALL PRIVILEGES ON `solin_utf8`.* TO 'solin'@'localhost' |
2 rows in set (0.00 sec)
6、create和grant配合法
①首先建立使用者solin01及密碼ubuntu,授權主機localhost
CREATE USER 'solin01'@'localhost' IDENTIFIED BY 'ubuntu';
②授權
mysql> create user solin01@localhost identified by 'ubuntu';
mysql> show databases;
+--------------------+
| Database |
| information_schema |
| mysql |
| performance_schema |
| solin_utf8 |
4 rows in set (0.00 sec)
mysql> grant all on solin_utf8.* to 'solin01'@'localhost';
7、授權區域網路内主機遠端連接配接
solin@localhost位置為授權通路資料庫的主機,localhost可以用域名,IP位址或者IP段來替代。
①IP配置方式
[root@db-server ~]# mysql -uroot -pcentos #登陸MySQL(-u使用者,-p,密碼)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3928
Server version: 5.1.73 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> flush privileges; #重新整理
mysql> \q
Bye
root@db-Client:~# mysql -utest -ptest -h 192.168.119.224 #遠端連接配接資料庫
Your MySQL connection id is 3930
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
mysql> \q #退出資料庫
②子網路遮罩配置方式
flush privileges;
MySQL用戶端連接配接異地資料庫服務
本地:mysql -uroot -pcentos=mysql -uroot -pcentos -h localhost
遠端:mysql -utest -ptest -h 192.168.119.224
通過php伺服器連接配接mysql伺服器的代碼
<?php
//$link_id=mysql_connect('主機名','使用者','密碼');
$link_id=mysql_connect('192.168.119.224','test''centos') or mysql_error();
if($link_id){
echo "mysql successful by oldboy !";
}else{
echo mysql_error();
}
?>
8、MySQL使用者的權限有哪些
權限表
權限
權限級别
權限說明
CREATE
資料庫、表或索引
建立資料庫、表或索引權限
DROP
資料庫或表
删除資料庫或表權限
GRANT OPTION
資料庫、表或儲存的程式
賦予權限選項
REFERENCES
ALTER
表
更改表,比如添加字段、索引等
DELETE
删除資料權限
INDEX
索引權限
INSERT
插入權限
SELECT
查詢權限
UPDATE
更新權限
CREATE VIEW
視圖
建立視圖權限
SHOW VIEW
檢視視圖權限
ALTER ROUTINE
存儲過程
更改存儲過程權限
CREATE ROUTINE
建立存儲過程權限
EXECUTE
執行存儲過程權限
FILE
伺服器主機上的檔案通路
檔案通路權限
CREATE TEMPORARY TABLES
伺服器管理
建立臨時表權限
LOCK TABLES
鎖表權限
CREATE USER
建立使用者權限
PROCESS
檢視程序權限
RELOAD
執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等指令的權限
REPLICATION CLIENT
複制權限
REPLICATION SLAVE
SHOW DATABASES
檢視資料庫權限
SHUTDOWN
關閉資料庫權限
SUPER
執行kill線程權限
MYSQL的權限如何分布,就是針對表可以設定什麼權限,針對列可以設定什麼權限等等,這個可以從官方文檔中的一個表來說明:
權限分布
可能的設定的權限
表權限
'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列權限
'Select', 'Insert', 'Update', 'References'
過程權限
'Execute', 'Alter Routine', 'Grant'
1、部落格,CMS等産品授權的資料庫授權
對于web連接配接使用者權限盡量采用最小化原則,很多開源軟體都是web界面安裝,是以,在安裝期間除了select,insert,update,delete4個權限外,還需要create、drop等比較危險的權限
2、正常情況下授權select,insert,update,delete4個權限即可,
生成資料庫表後,要收回create、drop權限
mysql> grant select,insert,update,delete,create,drop on test.* to 'solin'@'192.168.119.%' identified by'centos';
mysql> show grants for 'solin'@'192.168.119.%';
+------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected].% |
| GRANT USAGE ON *.* TO 'solin'@'192.168.119.%' IDENTIFIED BY PASSWORD '*128977E278358FF80A246B5046F51043A2B1FCED' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `test`.* TO 'solin'@'192.168.119.%' |
mysql> REVOKE create,drop ON test.* FROM 'solin'@'192.168.119.%';
| GRANT SELECT, INSERT, UPDATE, DELETE ON `test`.* TO 'solin'@'192.168.119.%' |
(1)生産環境針對主庫(寫為主讀為輔)使用者的授權
普通環境:
本機:LNMP、LAMP環境資料庫授權
GRANT all privileges ON ‘test.*’ TO ‘solin’@’localhost’ identified by ‘centos’;
應用伺服器和資料庫伺服器不在一個主機上的授權
GRANT all privileges ON ‘test.*’ TO ‘solin’@’192.168.119.%’ identified by ’centos’;
嚴格的授權:重視安全,忽略了友善:
GRANT SELECT,INSERT,UPDATE,DELETE ON ‘test.*’ to ‘solin’@’192.168.119.%’ identified by ‘centos’;
(2)生産環境從庫(隻讀)使用者的授權:
CRANT SELECT ON ‘test.*’ TO ‘solin’@’192.168.119.%’ identified by ‘centos’;
(3)主從進階授權政策
第一種使用簡單方法
寫庫
solin
Ysolin456
3306
192.168.119.224
讀庫
192.168.119.225
第二種配置方法
solin_w
solin_r
Ysolin789
主庫授權的指令
GRANT SELECT,INSERT,UPDATE,DELETE ON ‘test.*’@’192.168.119.%’ identified by ‘centos’;
從庫授權的指令
GRANT SELECT ON ‘test.*’ TO ‘solin’@’192.168.119.%’ identified by ‘centos’;
當從庫除了做select的授權外,還可以加read-only等隻讀參數,嚴格web使用者寫從庫
(4)問題:
就是主從庫的mysql庫和表示同步的,無法針對同一個使用者授權不同的權限,因為主從庫授權後會自動同步到從庫上,導緻從庫的授權隻讀失敗
解決辦法:
a.取消mysql庫的同步
b.授權主庫權限後,從庫執行回收增删改權限
c.不在授權上控制增删改,而是用read-only參數,控制普通使用者更新,注意,read-only參數對超級使用者無效。
本文轉自 運維小當家 51CTO部落格,原文連結:http://blog.51cto.com/solin/1875472,如需轉載請自行聯系原作者