各位老大, 小妹是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
請問有其他原因可能造成這個問題嗎?謝謝老大們!
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
1045 很有可能是密碼錯誤。
可能性
mysql -u root
就可,不要加-p
,另外可用sudo mysql_secure_installation
互動模式修改root密碼sudo mv /var/lib/mysql /var/lib/mysql_bkup
把舊的配置移掉且備份起來,再安裝mysql,此時會是全新的配置檔(root無密碼),應該就會與第一點的情況一樣。安裝完
正常用
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
上面的方式,可能會因為作業系統操作不太一樣。畢竟你也沒說你是哪個系統。
試試只下 sudo mysql 不帶 -u root -p 的參數看看
(測試環境: Windows10 20H2 + WSL2 + Ubuntu 2004 + MySQL 8.0.21 )