1)命令行的模式
# mysqladmin -u root -p'redhat12345' password 'zabbix12345'-S /data/3306/mysql.sock 将密码redhat12345修改为zabbix12345
2)SQL语句修改法
mysql> update mysql.user set password='12345' where user='root' and host='localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,password from mysql.user; +------+------------+-------------------------------------------+ | user | host | password | +------+------------+-------------------------------------------+ | root | localhost | 12345 | | root | C67-X64-A8 | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | C67-X64-A8 | | | wan | % | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | | wan | 10.10.10.% | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 | | rep | 10.10.10.% | *2698A63E7F5138951B60F853417ADB4CE2A02D87 | +------+------------+-------------------------------------------+ 9 rows in set (0.00 sec) 说明:我们发现上面显示的结果中,password居然是明文显示,很明显,不可能登陆到数据库 正确的做法: 结合password()函数: mysql> update mysql.user set password=password(redhat12345) where user='root' and host='localhost'; ERROR 1054 (42S22): Unknown column 'redhat12345' in 'field list' 错误原因,字符串应该用引号引起来(可以用单引号或者双引号) mysql> update mysql.user set password=password('redhat12345') where user='root' and host='localhost'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 登陆进行测试: [root@mysql-master mysqlback]# mysql -uroot -predhat12345 -S /data/3306/mysql.sock Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 27 Server version: 5.5.32-log 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)利用set命令来解决(不适合--skip-grant-tables方式修改密码)
mysql> set password=password("redhat12345"); Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
注意:
a) 修改密码的时候,必须指定where条件
b) 使用password()函数来加密更改密码