MySQL提供了多種修改賬戶密碼的方式:
1、可以用mysqladmin命令在命令行指定密碼
shell> mysqladmin -u user_name -h host_name password "newpwd"
該命令重設(shè)密碼的賬戶為user表內(nèi)匹配User列的user_name和Host列你發(fā)起連接的客戶端的記錄。
比如把密碼改為:root123
[root@mysql1 ~]# mysqladmin -u root password "root123" -p
Enter password: --這里需要輸入原來的老密碼
2、為賬戶賦予密碼的另一種方法是執(zhí)行SET PASSWORD語句
mysql> SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');
只有root等可以更新mysql數(shù)據(jù)庫的用戶可以更改其它用戶的密碼。
如果你沒有以匿名用戶連接,省略FOR子句便可以更改自己的密碼:
mysql> set password = password('mysql');
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
[root@mysql1 ~]# mysql -uroot -p
Enter password: --此時輸入老密碼會出現(xiàn)如下提示
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@mysql1 ~]# mysql -uroot -p
Enter password: --此時輸入新密碼連接成功
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.6.30 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>
3、可以在全局級別使用GRANT USAGE語句(在*.*)來指定某個賬戶的密碼而不影響賬戶當前的權(quán)限
mysql> GRANT USAGE ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'biscuit';
一般情況下最好使用上述3種方法來指定密碼,你還可以直接修改user表:
要想在創(chuàng)建新賬戶時建立密碼,在Password列提供一個值:
shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES;
要想更改已有賬戶的密碼,使用UPDATE來設(shè)置Password列值:
shell> mysql -u root mysql
mysql> UPDATE user SET Password = PASSWORD('bagel')
-> WHERE Host = '%' AND User = 'francis';
mysql> FLUSH PRIVILEGES;
當你使用SET PASSWORD、INSERT或UPDATE指定賬戶的密碼時,必須用PASSWORD()函數(shù)對它進行加密。(唯一的特例是如果密碼為空,你不需要使用PASSWORD())。
需要使用PASSWORD()是因為user表以加密方式保存密碼,而不是明文。如果你忘記了,你可能會象這樣設(shè)置密碼:
shell> mysql -u root mysql
mysql> INSERT INTO user (Host,User,Password)
-> VALUES('%','jeffrey','biscuit');
mysql> FLUSH PRIVILEGES;