簡體   English   中英

無法為 MySQL root 用戶設置密碼

[英]Cannot set password for MySQL root user

我試圖讓 MySQL 在我的本地主機上運行。 我以前從未發生過這種情況,但是在安裝時sudo apt-get install mysql-server沒有要求我提供初始密碼。

在搜索“重置”我的密碼並與目錄權限作斗爭的答案后,我目前處於這種狀態:

mysqld_safe 解決方案:

  • 重新啟動計算機后, mysql -u root -p會詢問我的密碼,在我輸入密碼后,它會抱怨ERROR 1698 (28000): Access denied for user 'root'@'localhost'
  • 如果我改為嘗試mysql -u root (no password),它會說ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
  • 如果我運行其他人發布的有關通過mysqld_safe --skip-grant-tables重置密碼的建議,那么我會在此過程中遇到一些小問題:
    • 首先我運行sudo service mysql stop
    • 然后sudo mysql_safe --skip-grant-tables會說mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
    • 如果我執行sudo mkdir -p /var/run/mysqldsudo chown mysql /var/run/mysqld我可以解決這個問題
    • 在此之后,運行mysqld_safe將運行並顯示消息Starting mysqld daemon with databases from /var/lib/mysql ,然后掛起。 Ctrl + C並沒有讓我擺脫那個。
    • 在一個新的終端窗口中,我現在可以實際連接mysql -u root並獲得mysql>提示。
    • 我可以use mysql; update user set authentication_string=password('0000') where user='root';flush privileges;設置一個新密碼use mysql; update user set authentication_string=password('0000') where user='root';flush privileges; use mysql; update user set authentication_string=password('0000') where user='root';flush privileges; 這將告訴我它成功更新了行,並顯示消息Rows matched: 1 Changed: 1 Warnings: 1
    • 警告僅說明: 'PASSWORD' is deprecated and will be removed in a future release.
    • 畢竟這一切,我又回到了第一點:進程仍然掛起,所以我必須重新啟動,因為killall mysqld_safeno process found 重新啟動並輸入我的新密碼0000 ,我將被拒絕訪問。

系統是Linux 4.15.0-48-generic #51-Ubuntu SMP

mysqladmin 解決方案

如果我運行mysqladmin -u root password '0000' (沒有sudo ),我得到:

mysqladmin:連接到“本地主機”服務器失敗

錯誤:'用戶'root'@'localhost'的訪問被拒絕

如果我用sudo運行它,我會得到:

mysqladmin: [警告] 在命令行界面上使用密碼可能不安全。

警告:由於密碼將以明文形式發送到服務器,請使用 ssl 連接以確保密碼安全。

最后一個並沒有真正告訴我關於密碼更改是否發生的任何信息; 它是否被拒絕(因為它是一個警告,而不是一個錯誤,我認為它應該通過),但在任何一種情況下,嘗試與0000連接仍然說“訪問被拒絕”。

非常感謝有關如何解決此問題的任何建議。

我沒有直接用mysql解決問題; 然而,對我自己來說,可接受的解決方案是切換到不同的數據庫軟件,但它仍然是一個 MySQL 系統,它讓我啟動並運行。 因此,如果有人陷入現有解決方案無法像我一樣工作的困境,也許這會派上用場,讓您上路並最終再次編寫代碼。

我所做的是:

  1. 從我的系統中清除mysql
  2. 手動刪除/etc/mysql/var/lib/mysql (不知道這一步有沒有必要)
  3. apt cleanapt autoremoveapt update
  4. 安裝mariadb
  5. 按照這些說明擺脫超時錯誤
  6. 使用mysqld_safe --skip-grant-tables方法創建具有所有權限的新用戶,因為與root連接總是失敗

PHP + MariaDB 現在又可以工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM