簡體   English   中英

在 Homestead 上重置 MySQL 密碼

[英]Reset MySQL Password on Homestead

我正在通過 Vagrant 運行 Homestead 以進行本地 Laravel 安裝。 我通過 ssh ( vagrant ssh ) 登錄 Homestead,並使用主機localhost 、用戶homestead 、密碼secret連接到 MySQL。 我能夠成功連接,並運行show databases; 告訴我那里有一個 information_schema 數據庫。 我認為一切都很好,我可以為我的 Laravel 項目創建一個新的數據庫並開始工作。

不幸的是,運行CREATE DATABASE mynewdb; 回來:

錯誤 1044 (42000):用戶 'homestead'@'localhost' 對數據庫 'mynewdb' 的訪問被拒絕

我嘗試通過以下方式為宅基地用戶提供更多權限:

GRANT ALL PRIVILEGES ON mynewdb.* TO 'homestead'@'localhost' WITH GRANT OPTION;

但是得到一個類似的訪問被拒絕消息:

Access denied for user 'homestead'@'localhost' (using password: YES)

我嘗試了該命令的其他一些變體,例如使用“%”而不是“localhost”,但似乎我的宅基地用戶沒有完全管理此數據庫所需的特權。

我認為我應該能夠使用 --skip-grant-tables 標志簡單地重新啟動 mysql 服務,然后以 homestead 或 root 身份登錄並擁有完全權限。 這也失敗了:

vagrant@homestead:~$ sudo /etc/init.d/mysql stop
[....] Stopping mysql (via systemctl): mysql.servic[.ok 

vagrant@homestead:~$ sudo /etc/init.d/mysql start --skip-grant-tables
[....] Starting mysql (via systemctl): mysql.servic[.ok 

vagrant@homestead:~$ mysql -h localhost
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO)
vagrant@homestead:~$ mysql -h localhost -u homestead
ERROR 1045 (28000): Access denied for user 'homestead'@'localhost' (using password: NO)
vagrant@homestead:~$ mysql -h localhost -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
vagrant@homestead:~$ mysql
ERROR 1045 (28000): Access denied for user 'vagrant'@'localhost' (using password: NO)

在這些嘗試之后,我使用 homestead 和 secret 登錄,只是為了檢查並查看是否有任何更改:

vagrant@homestead:~$ mysql -h localhost -u homestead -p
mysql> create database mynewdb;

錯誤 1044 (42000):用戶 'homestead'@'localhost' 對數據庫 'mynewdb' 的訪問被拒絕

最后,我注意到在我的 homestead.yml 文件中有一個看起來像這樣的條目:

databases:
- homestead

我將此條目修改為:

databases:
- homestead
- mynewdb

然后重新啟動 homestead VM:

vagrant halt
vagrant up

然后再次嘗試使用 homestead MySQL 用戶創建新的數據庫。 這些都沒有做任何事情,對於試圖做任何事情的宅基地用戶來說,訪問仍然被完全拒絕。

獲得訪問權限的建議?

要以 root 用戶身份登錄 MySQL,您可以使用:

mysql -u root -p

然后輸入您的 MySQL 密碼。

要以其他用戶身份登錄,您必須先創建該用戶並授予他權限。

使用創建用戶 - 將 newuser 更改為您想要的用戶名,將密碼更改為您選擇的密碼。

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

遺憾的是,此時 newuser 沒有權限對數據庫執行任何操作。 因此,第一階段是授予用戶做“事情”的權限。 要授予對所有數據庫和表的所有權限(選擇、創建、刪除、更新、刪除等),請運行:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

要授予對特定數據庫和表的特定權限,只需運行:

GRANT [type of privilege] ON [database name].[table name] TO '[username]'@'localhost';

如果您需要拒絕或撤銷某個特權,只需運行:

REVOKE [type of permission] ON [database name].[table name] FROM '[username]'@'localhost';

我沒有耐心嘗試解決這個問題,因為它顯然根本表現不正確。 我終於在備份我的配置后銷毀了 Homestead VM 及其所有文件,並重新安裝了機器。 啟動它,以及宅基地用戶如何擁有完全訪問權限。 不確定上次它到底發生了什么,但這里的教訓是:初始化新 VM 的成本很低,使用錯誤的權限進行斗爭的成本很高。

如果有人對我如何解決這個問題有解釋,我會接受他們的回答。 否則,重新安裝 Homestead 似乎是最快的解決方案。

暫無
暫無

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

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