iT邦幫忙

0

MYSQL新手問題

各位老大, 小妹是web新手遇到SQL問題
在linux上登入MYSQL,用以下命令:

sudo-mysql -u root -p

可是MYSQL不停輸出以下錯誤:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

從stackoverflow上找到類似解決方案,還是沒解決
https://stackoverflow.com/questions/41645309/mysql-error-access-denied-for-user-rootlocalhost?fbclid=IwAR07ZIeMXKah7dRZ9tydlt0-7jaR1hzfYhPqQUOFj9g8pMw-dnb752yEH-4

請問有其他原因可能造成這個問題嗎?謝謝老大們!

harrytsai iT邦新手 3 級 ‧ 2020-09-26 21:58:47 檢舉
這是安裝的時候沒有先設定Mysql root密碼,用指令把密碼設定好就可以了
3
rogeryao
iT邦高手 1 級 ‧ 2020-09-25 21:50:07
mysql >GRANT ALL PRIVILEGES ON *.* TO root@127.0.0.1 IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
mysql >FLUSH PRIVILEGES;
mysql>quit
service mysqld stop
service mysqld start
smiledog iT邦新手 5 級 ‧ 2020-10-08 21:46:48 檢舉

謝謝回答

0
wrxue
iT邦新手 2 級 ‧ 2020-09-25 21:56:45

1045 很有可能是密碼錯誤。

可能性

  1. 如果是剛安裝好,root預設是無密碼的,用mysql -u root就可,不要加-p,另外可用sudo mysql_secure_installation互動模式修改root密碼
  2. 若真的有密碼,但忘記或什麼原因不管,若想要重新安裝以得到無密碼的root,照以下步驟做:先移除mysql,再執行sudo mv /var/lib/mysql /var/lib/mysql_bkup把舊的配置移掉且備份起來,再安裝mysql,此時會是全新的配置檔(root無密碼),應該就會與第一點的情況一樣。

參考:
[MySQL] 在CentOS8.2上安裝MySQL8.0 與更改root密碼

smiledog iT邦新手 5 級 ‧ 2020-10-08 21:46:58 檢舉

謝謝回答

3
浩瀚星空
iT邦超人 1 級 ‧ 2020-09-25 22:15:41

安裝完
正常用

mysql -uroot -p

這可以了。

但如果會出現你說的情況。那就有可能是在你安裝過程中,有設定到了密碼。
這時就得用以下的方式來重設密碼了。

先確定你現在的身份就是 root

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &

先將MYSQL關閉,再用安全模式啟動。

這時候再用第一個方式進去MYSQL

mysql -uroot -p

再用以下的方式重新設定你的MYSQL ROOT密碼

mysql> use mysql;
mysql> UPDATE user SET Password=PASSWORD("你要設定的密碼") WHERE User='root';
mysql> flush privileges;
mysql> quit

之後再將mysql關掉再重新正常啟動就可以了

/etc/init.d/mysql stop
/etc/init.d/mysql start

上面的方式,可能會因為作業系統操作不太一樣。畢竟你也沒說你是哪個系統。

smiledog iT邦新手 5 級 ‧ 2020-10-08 21:47:08 檢舉

謝謝回答

1
japhenchen
iT邦高手 1 級 ‧ 2020-09-26 08:47:28

試試只下 sudo mysql 不帶 -u root -p 的參數看看
https://ithelp.ithome.com.tw/upload/images/20200926/20117954vUHfKdnrjz.png

(測試環境: Windows10 20H2 + WSL2 + Ubuntu 2004 + MySQL 8.0.21 )

記得,新版MySQL不支援root在本機之外使用,在進入MYSQL>之後,新建使用者並授與適當的權限

mysql>CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
mysql>GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'%';

以後就用這個newuser做網站或應用程式的用戶帳號,別再用root了

smiledog iT邦新手 5 級 ‧ 2020-10-08 21:47:17 檢舉

謝謝回答

我要發表回答

立即登入回答