標籤:
Centos 剛裝了mysql
yum install mysql
安裝成功了,安裝最後要求輸入了密碼,也輸入了,OK
mysql -uroot -p
輸入設定的密碼
竟然報錯了!
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YSE)
問朋友,他說初始密碼是空的,可我命名設定了密碼的阿。
密碼留空
還是錯誤!
ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)
於是重改密碼!
# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking;
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD(‘123456‘) where USER=‘root‘;
mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password:123456
mysql>
利用安全模式成功登陸,然後修改密碼,等於給MySql設定了密碼。登陸進去後,想建立一個資料庫測試下。得到的結果確實:
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
非常詭異啊,明明用密碼登陸進去了,怎麼還提示要求輸入密碼。
參考官方的一個文檔,見http://dev.mysql.com/doc/refman/5.6/en/alter-user.html。如下操作後就ok了:
mysql> create database yan1;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
mysql> SET PASSWORD = PASSWORD(‘123456‘);
Query OK, 0 rows affected (0.03 sec)
mysql> create database yan1;
Query OK, 1 row affected (0.00 sec)
也就是用mysql> SET PASSWORD = PASSWORD(‘123456‘);這句話重新設定一次密碼!
改密碼的注意事項
假定現在用密碼123456 可以登陸到資料庫,要將密碼改成zhou。
第一種方式:在終端裡,注意現在還沒有登陸到資料庫,輸入命令mysqladmin -p123456 password zhou
會出現這麼一句警告:Warning: Using a password on the command line interface can be insecure.這表示已經改成功了。常見的誤區:
誤區一:用原密碼已經登陸到mysql了,再這麼改就會報錯。一定注意,直接在終端裡,未登陸前改。
誤區二:將-p123456 寫成 -p 123456.這樣會報錯的,-p後面不能帶空格。
誤區三:password前面加了一個“-”.也是會報錯。
注意:password和新密碼之間一定要有空格。新密碼可以用""括起來。當有特殊字元時,這個引號是必須的。
第二種方式:登陸到mysql後,變更
mysql> update mysql.user set password=PASSWORD(‘yanyan‘) where user=‘root‘;
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
誤區:只運行了第一行命令,沒有flush privileges是改不了密碼的。全弄成小寫。經驗證完全可行。
綜合來看我更喜歡第一種改密碼的方式。
Mysql 命令列啟動問題ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)