簡體   English   中英

用戶 root 訪問被拒絕 - MAC OS 上的 mysql

[英]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)這有效:

mysql root密碼忘記了

您可以在 Mac (El Capitan) 上執行以下操作

  1. 打開終端窗口,如果 mysql 已經在運行,請使用以下命令停止它。

sudo /usr/local/mysql/support-files/mysql.server stop

您還可以檢查 System Preferences > MySQL 以查看它是否正在運行

  1. 使用以下命令啟動 MySQL:

    sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

  2. 打開一個新的終端窗口/選項卡:

    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';

  3. 停止 MySql 服務器

    sudo /usr/local/mysql/support-files/mysql.server stop

  4. 通過 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:

  1. brew install mariadb
  2. 啟動 MySQL 服務器: mysql.server start或運行brew services start mariadb在登錄計算機時啟動 MySQL 服務器。
  3. 進入 MySQL 實例sudo mysql -u root

注意: mysql -u root會拋出錯誤ERROR 1698 (28000): Access denied for user 'root'@'localhost'所以使用sudo運行這個命令。

  1. 現在要更改root用戶的密碼,我嘗試了以下命令:

    1. UPDATE user SET password=PASSWORD("mypassword") WHERE User='root';
      • 這引發了一個錯誤: ERROR 1348 (HY000): Column 'Password' is not updatable
    2. UPDATE user SET authentication_string=PASSWORD("mypassword") WHERE User='root';
      • 這引發了一個錯誤: ERROR 1348 (HY000): Column 'authentication_string' is not updatable
  2. 但是以下命令有效

    • 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,我的解決方案與上面的有點不同

  1. cd到我安裝mysql的文件夾。 就我而言,它是cd /opt/homebrew/Cellar/mysql/8.0.27/bin因為我使用brew安裝mysql

  2. 使用mysqld_safe將無濟於事。 試試這個語法mysqld --skip-grant-tables & 在此處輸入圖像描述

  3. 輸入mysql

  4. 輸入FLUSH PRIVILEGES;

  5. 輸入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.

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