[英]Mac mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
[英]Access denied for user root - mysql on MAC OS
我知道如何在 ubuntu 上跳過這個問題,但我如何在 MAC OS 上做到這一點?
如何在 MAC 上設置 mysql 的密碼?
1) 不起作用
mysqladmin -u root password NEWPASSWORD
2)不起作用
mysqld --skip-grant-tables --skip-networking &
3)這有效:
您可以在 Mac (El Capitan) 上執行以下操作
sudo /usr/local/mysql/support-files/mysql.server stop
您還可以檢查 System Preferences > MySQL 以查看它是否正在運行
使用以下命令啟動 MySQL:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
打開一個新的終端窗口/選項卡:
sudo /usr/local/mysql/bin/mysql -u root
這應該打開“mysql”提示。 執行以下命令:
$mysql> UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';
故障排除提示:
A) 5.7 之前的 MySql 版本的命令是:
$mysql> UPDATE user SET Password=PASSWORD('my_password') where USER='root';
B) 如果您看到ERROR 1046 (3D000): No database selected
,請先運行以下命令:
use mysql;
C) 如果您看到未知的“密碼”字段錯誤,請運行以下命令:
UPDATE USER SET AUTHENTICATION_STRING=password('NewPassword') WHERE user='root'; $mysql> FLUSH PRIVILEGES; $mysql> EXIT
D) 如果您看到 - ERROR 1064 (42000):您的 SQL 語法有錯誤; 這是因為在 8.0.11 版本中去掉了密碼功能。 使用裸字符串:
UPDATE USER SET AUTHENTICATION_STRING='NewPassword' WHERE user='root';
停止 MySql 服務器
sudo /usr/local/mysql/support-files/mysql.server stop
通過 System Preferences > MySql 或使用命令重新啟動 MySQL。
的解決方案
UPDATE user SET authentication_string=PASSWORD("my_password") WHERE User='root';
不是為我工作,但我做到了
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword';
並且能夠繼續進行。 我正在使用 8.0.12 版。
您可以在 iMac 或 Mac (High Sierra) 上執行以下操作
打開終端窗口,如果 mysql 已經在運行,則停止它。 您還可以檢查此系統偏好設置 > MySQL > 查看它是否正在運行。
使用此命令啟動 MySQL 以跳過主表
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
打開一個新的終端窗口/選項卡..
sudo /usr/local/mysql/bin/mysql -u root
這應該打開“mysql”提示。 執行以下命令:
A) MySQL 5.6 及以下
UPDATE mysql.user SET password=PASSWORD('NewPassord') WHERE user='root';
- 或者 -
B) MySQL 5.7+
UPDATE mysql.user SET authentication_string=PASSWORD('NewPassord') WHERE user='root';
通過 System Preferences > MySql 或使用命令重新啟動 MySQL。
MACOS 10.14 莫哈韋 || MYSQL 8.0.15
這在我的 Mac 上不起作用:
sudo /usr/local/mysql/support-files/mysql.server 停止
但這實際上有效:
sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/support-files/mysql.server stop
安裝文件夾可能因用戶而異,請注意!
或者只是檢查 > 系統首選項 > MySQL > 如果服務器正在運行,請停止它。
然后,
使用以下命令啟動 MySQL:
sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld_safe --skip-grant-tables
打開一個新的終端窗口/選項卡:
sudo /usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysql -u root
這應該打開“mysql”提示。 執行以下命令(*scroll right if you don't full query):
UPDATE mysql.user SET authentication_string='your-password-goes-here' WHERE user='root' and host='localhost';
請記住
mysql-8.0.15-macos10.14-x86_64
(在我的情況下)是本地機器上的安裝文件夾,由於操作系統版本、mysql 版本、使用的安裝方法等,它可能與我的不同,也可能不同。
MariaDB 版本的非常簡單的修復: Mojave
macOS 上10.4.6-MariaD
我已經瀏覽了所有答案。 其中一些對我有用,而另一些則不是。 我找到了一種在 macOS 或 OSX 上解決此問題的簡單方法。 以下是步驟:
先決條件:
應該安裝自制軟件。 使用以下鏈接在 macOS 或 OSX 上安裝 homebrew。
安裝 mariadb:
brew install mariadb
mysql.server start
或運行brew services start mariadb
在登錄計算機時啟動 MySQL 服務器。sudo mysql -u root
注意: mysql -u root
會拋出錯誤ERROR 1698 (28000): Access denied for user 'root'@'localhost'
所以使用sudo
運行這個命令。
現在要更改root
用戶的密碼,我嘗試了以下命令:
UPDATE user SET password=PASSWORD("mypassword") WHERE User='root';
ERROR 1348 (HY000): Column 'Password' is not updatable
UPDATE user SET authentication_string=PASSWORD("mypassword") WHERE User='root';
ERROR 1348 (HY000): Column 'authentication_string' is not updatable
但是以下命令有效:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'mypassword';
Query OK, 0 rows affected (0.009 sec)
因此,對於通過 brew 安裝的10.4.6-MariaD
版本,這對我來說是一個簡單的修復。 希望這對你也有幫助。
對於 MySQL 5.7,我必須使用:
更新用戶 SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';
sudo mysql -uroot
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
flush privileges;
Ctrl+D
mysql -uroot -pnew_password # will work now
注意第一行的sudo
。
我曾經嘗試過所有解決方案,但沒有任何效果。 終於突然間我找到了解決方案! 我使用 10.5.8-MariaDB Homebrew。
USE mysql;
SELECT user, authentication_string, plugin, host FROM mysql.user;
由於某些原因 authentication_string 無效,這是我們需要修復的
然后只需運行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
我很難在 MAC Sierra、10.12.6、MySql 版本 5.7.17 上解決這個問題
以下步驟對我有用:
打開終端窗口,如果 mysql 已經在運行,請使用以下命令停止它。
sudo /usr/local/mysql/support-files/mysql.server 停止
使用以下命令啟動 MySQL:
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
打開一個新的終端窗口/選項卡:
sudo /usr/local/mysql/bin/mysql -u root
這將打開“mysql”提示。 在mysql提示符下一一執行以下命令:
use mysql;
UPDATE user SET authentication_string = PASSWORD('my_new_password'), password_expired = 'N' WHERE User = 'root';
FLUSH PRIVILEGES;
EXIT
現在先停止 MySql 服務器,然后使用以下命令啟動它
sudo /usr/local/mysql/support-files/mysql.server 停止
sudo /usr/local/mysql/support-files/mysql.server 開始
希望這可以解決您的問題。
我發現在 Mac Mojave 中,至少如果你直接從下載 MySQL 社區包而不是通過 brew 進行安裝,顯然你仍然需要在停止后通過系統偏好設置屏幕插入你為“root”選擇的密碼,重新啟動安全模式(--skip-grant-tables)和刷新權限。 然后您可以在 phpMyAdmin 中以 root 身份登錄。 這是在嘗試了至少 20 組不同的建議/說明來解決這個問題之后,包括本頁上面列出的那些。 希望它可以幫助某人!
我正在使用 Mac,我的解決方案與上面的有點不同
cd到我安裝mysql的文件夾。 就我而言,它是cd /opt/homebrew/Cellar/mysql/8.0.27/bin
因為我使用brew
安裝mysql
輸入mysql
輸入FLUSH PRIVILEGES;
輸入ALTER USER 'root'@'localhost' IDENTIFIED BY 'password you want';
如果您看到ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
錯誤。 只需輸入大寫字母+數字+特殊字符的密碼
Mac OSX 12.1(蒙特雷)
在 x86_64 上安裝了 Oracle MySql: mysql Ver 8.0.28 for macos11 (MySQL Community Server - GPL)
安裝后使用軟件包安裝,您設置的 root 密碼不會保存在服務器內的mysql數據庫中。 我從上面嘗試了一些更新用戶命令,最終解決了這個問題的是系統偏好設置 > MySql > 初始化數據庫 > [再次設置密碼]。
停止數據庫並重新啟動能夠與 root 用戶創建會話。 現在它正在工作,我有點想把它扔掉,只是為了頭疼而改用 mariadb。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.