1. 爲管理員root用戶設置密碼的方法
[root@Howden ~]# mysqladmin -uroot password '12345678' #爲沒有密碼的用戶設置密碼 [root@Howden ~]# mysqladmin -uroot password '12345678' -S /data/3306/mysql.sock #適合多實例mysql
2. 修改密碼的方法一:Shell命令行修改
[root@Howden ~]# mysqladmin -uroot -p123456 password '12345678' [root@Howden ~]# mysqladmin -uroot -p123456 password '12345678' -S /data/3306/mysql.sock
3. 修改密碼的方法二:用SQL語句UPDATE修改(適合密碼丟失後通過--skip-grant-tables參數啓動數據庫後修改密碼)
mysql> DESC mysql.user; #查看user表結構,找到Password字段 +------------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+---------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | ...... #此處省略39行。。。 mysql> SELECT user,host,password FROM mysql.user; #可以看到,mysql中存儲的用戶密碼是加密的 +--------+-----------+-------------------------------------------+ | user | host | password | +--------+-----------+-------------------------------------------+ | system | localhost | *E1CC002C309F98DEEE357E8B53BE83C4E2C451A0 | +--------+-----------+-------------------------------------------+ 1 row in set (0.00 sec) mysql> UPDATE mysql.user SET password=password(12345678) WHERE user='system' AND host='localhost'; #用password函數將新密碼加密,否則修改後的密碼是明文的,無法登錄 Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> FLUSH PRIVILEGES; #需要刷新之後才生效,否則只存在於內存中,無法寫入到數據文件中 Query OK, 0 rows affected (0.00 sec)
4. 修改密碼的方法三:用SQL語句SET修改(最省事,但只能修改當前登錄用戶的密碼)
mysql> SET password=password('12345678'); #這裏必須加引號 Query OK, 0 row affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)