天天看點

建立MySQL使用者及賦予使用者權限 建立MySQL使用者及賦予使用者權限 企業生産環境環境如何授權使用者權限

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,如需轉載請自行聯系原作者