1)指令行的模式
<code># mysqladmin -u root -p'redhat12345' password 'zabbix12345'-S /data/3306/mysql.sock</code>
<code>将密碼redhat12345修改為zabbix12345</code>
2)SQL語句修改法
<code>mysql> update mysql.user </code><code>set</code> <code>password=</code><code>'12345'</code> <code>where user=</code><code>'root'</code> <code>and host=</code><code>'localhost'</code><code>;</code>
<code>Query OK, 1 row affected (0.00 sec)</code>
<code>Rows matched: 1 Changed: 1 Warnings: 0</code>
<code>mysql> flush privileges;</code>
<code>Query OK, 0 rows affected (0.00 sec)</code>
<code>mysql> </code><code>select</code> <code>user,host,password from mysql.user;</code>
<code>+------+------------+-------------------------------------------+</code>
<code>| user | host | password |</code>
<code>| root | localhost | 12345 |</code>
<code>| root | C67-X64-A8 | |</code>
<code>| root | 127.0.0.1 | |</code>
<code>| root | ::1 | |</code>
<code>| | localhost | |</code>
<code>| | C67-X64-A8 | |</code>
<code>| wan | % | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |</code>
<code>| wan | 10.10.10.% | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |</code>
<code>| rep | 10.10.10.% | *2698A63E7F5138951B60F853417ADB4CE2A02D87 |</code>
<code>9 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>
<code>說明:我們發現上面顯示的結果中,password居然是明文顯示,很明顯,不可能登陸到資料庫</code>
<code>正确的做法:</code>
<code>結合password()函數:</code>
<code>mysql> update mysql.user </code><code>set</code> <code>password=password(redhat12345) where user=</code><code>'root'</code> <code>and host=</code><code>'localhost'</code><code>;</code>
<code>ERROR 1054 (42S22): Unknown column </code><code>'redhat12345'</code> <code>in</code> <code>'field list'</code>
<code>錯誤原因,字元串應該用引号引起來(可以用單引号或者雙引号)</code>
<code>mysql> update mysql.user </code><code>set</code> <code>password=password(</code><code>'redhat12345'</code><code>) where user=</code><code>'root'</code> <code>and host=</code><code>'localhost'</code><code>;</code>
<code>登陸進行測試:</code>
<code>[root@mysql-master mysqlback]</code><code># mysql -uroot -predhat12345 -S /data/3306/mysql.sock</code>
<code>Welcome to the MySQL monitor. Commands end with ; or \g.</code>
<code>Your MySQL connection </code><code>id</code> <code>is 27</code>
<code>Server version: 5.5.32-log Source distribution</code>
<code>Copyright (c) 2000, 2013, Oracle and</code><code>/or</code> <code>its affiliates. All rights reserved.</code>
<code>Oracle is a registered trademark of Oracle Corporation and</code><code>/or</code> <code>its</code>
<code>affiliates. Other names may be trademarks of their respective</code>
<code>owners.</code>
<code>Type </code><code>'help;'</code> <code>or </code><code>'\h'</code> <code>for</code> <code>help. Type </code><code>'\c'</code> <code>to </code><code>clear</code> <code>the current input statement.</code>
<code>mysql></code>
3)利用set指令來解決(不适合--skip-grant-tables方式修改密碼)
<code>mysql> </code><code>set</code> <code>password=password(</code><code>"redhat12345"</code><code>);</code>
<code>Query OK, 0 rows affected (0.01 sec)</code>
注意:
a) 修改密碼的時候,必須指定where條件
b) 使用password()函數來加密更改密碼
本文轉自 冰凍vs西瓜 51CTO部落格,原文連結:http://blog.51cto.com/molewan/1861052,如需轉載請自行聯系原作者