mysql的安全性機制

來源:互聯網
上載者:User

標籤:

MySQL中主要包括兩種使用者:root使用者和普通使用者,其中前者為超級管理員,擁有MySQL提供的一切許可權;而普通使用者則只能擁有建立使用者時賦予它的許可權。

MySQL的安全性機制主要包括許可權機制,使用者機制和對使用者進行許可權管理。

1.MySQL所提供的許可權

在系統資料庫mysql下儲存的都是許可權的表,其中最重要的表是mysql.user,mysql.db,mysql.host。

1.1 系統資料表mysql.user

該表有39個欄位,這些欄位大致可以分為4類,分別為使用者欄位,許可權欄位,安全欄位和資源控制欄位。

使用者欄位:使用者欄位包含三個欄位,主要用來判斷使用者是否能夠登入成功。

許可權欄位:user表中擁有一系列以"_priv"字串結尾的欄位,這些欄位決定了使用者權限。

安全欄位:安全欄位主要包括4個欄位,包含ssl欄位的欄位主要用來實現加密,包含x509的欄位主要用來標識使用者。

資源控制欄位:資源控制欄位主要包括4個欄位,主要用來控制資源,所有資源控制欄位的預設值為0,表示沒有任何限制。

1.2 系統資料表mysql.db和mysql.host

在系統資料庫mysql中,許可權除了表user外,還有表db和表host。這兩張表中都儲存了某個使用者對相關資料庫的許可權,結構大致相同。

2. MySQL所提供的使用者機制

為了資料庫的安全性和完整性,MySQL提供了一整套使用者管理機制。使用者管理機制包括登入和退出MySQL伺服器,建立使用者,刪除使用者,修改使用者密碼和為使用者賦許可權等內容。

2.1 登入和退出MySQL

2.1.1 登入MySQL:

串連MySQL伺服器的完整DOS命令如下所示:

mysql -h hostname | hostIp -p port -u username -p DataBaseName -e "SQL語句"

參數說明:

-h:用來指定所串連的MySQL伺服器的地址,可以用兩種方式來表示。參數hostname表示主機名稱,參數hostIp表示主機IP地址。

-p:用來指定所串連的MySQL伺服器的連接埠號碼。

-u:用來指定哪個使用者要串連MySQL伺服器。

-p:表示將提示輸入密碼。

DataBaseName:用來指定串連到MySQL伺服器後,登入到哪一個資料庫中。如果沒有指定,預設為系統資料庫mysql。

-e:用來指定所執行的SQL語句。

樣本:

通過使用者賬戶root登入到MySQL伺服器的資料庫cmpany中,命令如下:

mysql -h 127.0.0.1 -u root -p company
mysql -h 127.0.0.1 -u root -p company -e "SELECT * FROM t_dept";

如果想在具體串連中直接設定密碼,而不是在輸入密碼提示中進行設定,可以通過下面命令來實現,不過該密碼需要直接加在參數-p後面,中間絕對不能有空格。

mysql -h 127.0.0.1 -u root -p123456 company

2.1.2 退出MySQL

退出MySQL伺服器的DOS命令如下:

EXIT | QUIT

2.2 建立普通使用者帳號

2.2.1 執行CREATE USER語句來建立使用者賬戶

CREATE USER username[IDENTIFIED BY [PASSWORD] ‘password‘]        [,username[IDENTIFIED BY [PASSWORD] ‘password‘]]        ……        [,username[IDENTIFIED BY [PASSWORD] ‘password‘]]

樣本如下:

CREATE USER ‘cjgong‘@‘localhost‘ IDENTIFIED BY ‘123456‘;

2.2.2 執行INSERT語句來建立使用者

當向系統資料表mysql.user中插入資料記錄時,一般只需插入Host,User,和Password這三個欄位即可。文法如下:

INSERT INTO USER(HOST,USER,PASSWORD) VALUES(‘hostname‘,‘username‘,PASSWORD(‘password‘);

2.2.3 執行GRANT語句來建立使用者

GRANT priv_type ON databasename.tablename    TO username[IDENTIFIED BY [PASSWORD] ‘password‘]       [,username[IDENTIFIED BY [PASSWORD] ‘password‘]]        ……       [,username[IDENTIFIED BY [PASSWORD] ‘password‘]]]

樣本如下:

GRANT SELECT ON company.t_dept    TO ‘cjogng2‘@‘localhost‘ IDENTIFIED BY ‘123456‘;

該語句不僅可以建立使用者賬戶,還可以對其進行賦許可權。

2.3 利用擁有超級許可權使用者root修改賬戶密碼

2.3.1 通過mysqladmin命令修改root使用者密碼

mysqladmin -u username -p PASSWORD "new_password"

樣本如下:

mysqladmin -u root -p PASSWORD "123456"

2.3.2 通過SET命令修改root使用者密碼

SET PASSWORD=PASSWORD("new_password")

樣本如下:

SET PASSWORD=PASSWORD("123456")

2.3.3 更新系統資料表mysql.user資料記錄修改root使用者密碼

UPDATE USER SET PASSWORD=PASSWORD("new_password") WHERE USER="root" AND HOST="localhost";

樣本如下:

UPDATE USER SET PASSWORD=PASSWORD("123456") WHERE USER="root" AND HOST="localhost";

2.4 利用擁有超級許可權使用者root修改普通使用者賬戶密碼

2.4.1 通過GRANT命令修改普通使用者密碼

文法如下所示:

GRANT priv_type ON database.table    TO user[IDENTIFIED BY [PASSWORD] ‘new_password’]

樣本如下:

GRANT SELECT,CREATE,DROP ON *.*    TO ‘cjgong‘@‘localhost‘ IDENTIFIED BY ‘123456‘

2.4.2 通過SET命令修改普通使用者密碼

文法如下:

SET PASSWORD FOR ‘username‘@‘hostname‘=PASSWORD("new_password");

樣本如下:

SET PASSWORD FOR ‘cjgong‘@‘localhost‘=PASSWORD("123456");

2.4.3 更新系統資料表mysql.user資料記錄修改root使用者密碼

文法如下:

UPDATE USER SET PASSWORD=PASSWORD("new_password") WHERE USER="user" AND HOST="localhost";

樣本如下:

UPDATE USER SET PASSWORD=PASSWORD("new_password") WHERE USER="cjgong" AND HOST="localhost";

2.4.4 通過SET命令修改普通使用者密碼(2)

使用普通使用者登入MySQL伺服器,可以通過SET命令修改自己的秘密。

文法如下:

SET PASSWORD=PASSWORD("new_password");

樣本如下:

SET PASSWORD=PASSWORD("123456");

2.5 刪除普通使用者帳號

2.5.1 通過DROP USER語句刪除普通使用者

文法如下:

Drop user user1 [,user2]...

樣本如下:

DROP USER ‘cjgong‘@‘localhost‘;

2.5.2 刪除系統資料表mysql.user資料記錄實現刪除普通使用者帳號

DELETE FROM USER WHERE USER="user" AND HOST="localhost"

樣本如下:

DELETE FROM USER WHERE USER="cjgong" AND HOST="localhost"

3. 許可權管理

mysql的安全性機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.