MySQL之賬戶管理的幾種方式


MySQL之賬戶管理

賬戶管理是MySQL用戶管理最基本的內容。包括登錄,退出MySQL服務器、創建用戶、刪除用戶、密碼管理和權限管理等內容。

  

1、新建普通用戶

MySQL數據庫中,建立用戶有3種方式:

  • 使用create user語句來創建新的用戶;
  • 直接在mysql.user表中insert 用戶;
  • 使用grant 語句來新建用戶;

(1)、方式一:create user

  使用CREATE USER語句創建用戶,必須要擁有CREATE USER權限。其格式如下:

CREATE USER user[IDENTIFIED BY [PASSWORD] 'password'],
[user[IDENTIFIED BY [PASSWORD] 'password']]...

  其中,user參數表示新建用戶的賬戶,user由用戶名(User)和主機名(Host)構成;IDENTIFIED BY關鍵字用來設置用戶的密碼;password參數表示用戶的密碼;如果密碼是一個普通的字符串,就不需要使用PASSWORD關鍵字。可以沒有初始密碼。

  示例:

CREATE USER 'admin'@'%' IDENTIFIED BY 'admin'

  執行之后user表會增加一行記錄,但權限暫時全部為'N'

(2)方式二:用INSERT語句新建普通用戶

  可以使用INSERT語句直接將用戶的信息添加到mysql.user表。但必須擁有mysql.user表的INSERT權限。

  另外,ssl_cipherx509_issuerx509_subject沒有值,必須要設置值,否則INSERT語句無法執行。

  示例:

INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES('%','newuser1',PASSWORD('123456'),'','','')

  執行INSERT之后,需要使用一下命令來刷新權限

FLUSH PRIVILEGES

  命令來使用戶生效。

(3)、用GRANT語句來新建普通用戶

  GRANT來創建新的用戶時,能夠在創建用戶時為用戶授權。但需要擁有GRANT權限。

  語法如下:

GRANT priv_type ON database.table

TO user[IDENTIFIED BY [PASSWORD] 'password']

[,user [IDENTIFIED BY [PASSWORD] 'password']...]

  • priv_type:參數表示新yoghurt的權限;
  • databse.table:參數表示新用戶的權限范圍;
  • user:參數新用戶的賬戶,由用戶名和主機構成;
  • IDENTIFIED BY關鍵字用來設置密碼;
  • password:新用戶密碼;

  GRANT語句可以同時創建多個用戶。

GRANT SELECT ON *.* TO netUser@'%'

  *.*db.*的區別在於。*.*對所有數據庫生效,所以user表的SELECT會變為Y。而db.*user表為'N',更改的是Db表。

2、刪除普通用戶

(1)、DROP USER語句刪除普通用戶

需要擁有DROP USER權限。語法如下:

DROP USER user[,user]...

user是需要刪除的用戶,由用戶名(User)和主機名(Host)構成。

DROP USER 'newuser1'@'%'

(2)、DELETE語句刪除普通用戶

  可以使用DELETE語句直接將用戶的信息從mysql.user表中刪除。但必須擁有對mysql.user表的DELETE權限。

DELETE FROM mysql.user WHERE Host = '%' AND User = 'admin'

  刪除完成后,一樣要FLUSH PRIVILEGES才生效。

3、修改密碼

(1)、使用mysqladmin命令來修改root用戶的密碼

  語法:

mysqladmin -u -username -p password "new_password"

  新密碼(new_password)必須用括號括起來,單引號會報錯。

  示例:

  (注:這個待驗證,我怎么執行都不成功!)

(2)、修改user表

UPDATE user表的passwor字段的值,也可以達到修改密碼的目的;

UPDATE user SET Password = PASSWORD('123') WHERE USER = 'myuser'

  FLUSH PRIVILEGES后生效。

(3)、使用SET語句來修改密碼

  使用root用戶登錄到MySQL服務器后,可以使用SET語句來修改密碼:

  修改自己的密碼,不需要用戶名

SET PASSWORD = PASSWORD("123");

  修改其他用戶密碼:

SET PASSWORD FOR 'myuser'@'%'=PASSWORD("123456")

  FOR 用戶名@主機名

(4)、GRANT語句來修改普通用戶的密碼

  使用GRANT語句修改普通用戶的密碼,必須擁有GRANT權限。

GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password']

  示例:

GRANT SELECT ON *.* TO 'test3'@'%' IDENTIFIED BY '123'

4、忘記密碼的解決方案

  如果root用戶密碼丟失了,會給用戶造成很大的麻煩。但是,可以通過某種特殊方法登錄到root用戶下,然后修改密碼。

  (1)、使用--skip-grant-tables選項啟動MySQL服務

  該選項將使MySQL服務器停止權限判斷,任何用戶都能夠訪問數據庫。

  在Windows操作系統下,使用mysqlidmysqlid-nt來啟動MySQL服務。

  mysqld命令:

  mysqld --skip-grant-tables

  mysqld-nt命令:

  mysqld-nt --skip-grant-tables

  net start mysql命令:

  net start mysql --skip-grant-tables

  (2)、登錄root用戶,並且設置新密碼

  mysql -u root

  必須使用UPDATE語句更新mysql數據庫下的user表,而不能使用SET語句,因為--skip-grant-tables不能使用SET語句。

  修改完密碼以后,FLUSH PRIVILEGES語句加載權限表,新密碼即生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM