MacOSX自作mysql rootパスワード


116

何らかの理由で、MySQLはrootへのアクセス権の付与を停止しました。Homebrewをアンインストールして再インストール。フレッシュインストール、フレッシュテーブルですが、入力すると

mysql -u root -p

私はこのエラーを受け取ります:

ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)

MySQLを5回再インストールしましたが、パスワードの入力を求められます。どうすれば修正できますか?


スーパーユーザーにはほぼ正確な質問があります。次の手順に従ってください:superuser.com/a/400345
Icarus

13
実行mysql_secure_installationして、質問に答えるだけです。簡単です
Abhinav Singh 2013

8
mysql_secure_installationコマンドはrootパスワードを要求します。設定して忘れた場合、この手順は役に立ちません。
JohnG

1
醸造は、MySQL 5.7をインストールした場合は、次の手順に従います。stackoverflow.com/a/33924648/133106
mrucci

FWIW mysql -u rootはここで働いた...
rogerdpack '25 / 11/16

回答:


115

次のコマンドを実行してNEWPASSください(パスワードはどこですか):

$(brew --prefix mysql)/bin/mysqladmin -u root password NEWPASS

私は同じエラーを抱えており、このように修正しました。


16
私のために働いた。明らかに(おそらく)、ドル記号($)はコマンドの一部として入力する必要があります(これはシェルプロンプトだけではありません)。
ホブ

2
@BrentFoustもちろんです。$コマンドラインシェルコマンドの先頭で、char の使用法を明確にしました。他のユーザーは、$サインがSOや他のフォーラムでシェルプロンプトマーカーとしてよく使用されるため、混乱する可能性があります。しかし、$との間にスペースがないことも、(人々の手がかりになるはずです。
ホブ

3
シェルの履歴ファイルに格納されないようにするために、コマンドにNEWPASSを含めないことをお勧めします。このコマンドは、パスなしで実行すると自動的に入力を要求するため、理由はありません。:)
Levi Figueira 2014

4
mariadbを使用する場合:$(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS
bryceadams 2017年

8
mariadb(@bryceadams noteを使用しても)では機能しません:/ usr / local / opt / mariadb / bin / mysqladmin: 'localhost'でサーバーに接続できませんでしたエラー: 'ユーザー' root '@' localhost 'のアクセスが拒否されました'
trainoasis

110

これらのどれも私にとってはうまくいきませんでした。コンピュータのどこかにすでにmysqlがあったので、そこにパスワードが設定されていると思います。そこにあるすべてのソリューションを何時間もかけて試した後、これは私にとってうまくいきました:

$ brew services stop mysql
$ pkill mysqld
$ rm -rf /usr/local/var/mysql/ # NOTE: this will delete your existing database!!!
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -uroot

@Ghruaへのすべてのクレジット


6
以前の投稿は私にとってはうまくいきませんでしたが、破壊的である間、これはうまくいきました。
クレイ

1
最終的にmysqlにログインしたら、を使用ALTER USER 'root'@'localhost' IDENTIFIED BY 'YOURNEWPASSWORD';して新しいrootパスワードを設定します。
Martin Braun

これは私の既存のデータベースを削除せずに私にとっては
うまくいった

最後に適切な作業ソリューション。@ 2020 MacOsカタリナ。
Mindaugas Kurlys

前の解決策がうまくいかなかったとき、これは私のために働きました。ありがとうございました!
レブラウン

65

誤ってrootパスワードを設定して忘れてしまったため、すべてのデータベースをワイプして最初からやり直したくない場合は、怠惰で適切なバックアップソリューションを用意し忘れており、かなり最近のHomebrewインストールを使用しているためです。 (2013年冬)、MySQLのパスワードをリセットする手順は次のとおりです。

現在実行中のMySQLインスタンスを停止します

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

次に、許可テーブルとネットワークを手動でスキップしてmysqlを開始します

$(brew --prefix mysql)/bin/mysqld_safe --skip-grant-tables --skip-networking

echo $(brew --prefix mysql)を実行し、bashで「/ usr / local / opt / mysql」として応答しない場合は、それに応じてパスを調整する必要があることに注意してください。

これを実行すると、保護されていないMySQLインスタンスが実行できるようになります。

ログインしてパスワードを設定する

mysql -u root

プロンプトで、次のMySQLコマンドを入力して、影響を受けるユーザーの新しいパスワードを設定します。

mysql> update mysql.user set password=PASSWORD('new_password_here') WHERE user='root';

すべてが計画に行った場合、それは言う必要があります:

Query OK, 1 row affected (0.02 sec)
Rows matched: 4  Changed: 1  Warnings: 0

MySQLプロンプトを終了します。

mysql> exit
Bye

サーバーを停止します。

mysqladmin -u root shutdown

ここで、起動デーモンを元に戻し、MySQLを再び準備します。

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

おめでとう。mysql rootパスワードをリセットしただけです。コーヒーを自分で注ぎ、バックアップソリューションを用意してください!


5
パスワードを変更した後に保護されていないMySQLサーバを停止するには:mysqladmin -u root shutdown
Vebjorn Ljosa

9
私はこの問題に遭遇し、この答えが最も近いことがわかりました。passwordmysql 5.7.9ではこれが有効な列ではないことに気付きました。代わりに、代わりに使用する必要がありauthentication_stringました。残りの指示は完全に機能しました。ありがとう!
M.スコットフォード

5
M.スコット・フォードが言ったように、適切なコマンドは次のとおりです。update user set authentication_string=password('new_password_here') where user='root';
Panayotis

3
私はupdate mysql.user set authentication_string=password('none') where user='root';それが機能するために走らなければなりませんでした。(私のすぐ上のコメントのように、先頭mysql.user。を追加します。)
Steve Meisner

2
mysql 8.0.11以降、パスワード機能は削除されました。詳細もっと
chancyWu

62

私は数日前に同じ問題を抱えていました。デーモンを起動する前に初期化スクリプト()mysqlを介してインストールしhomebrew、実行すると発生します。mysql_install_dbmysql

それを修正するには、削除することができmysql、データファイルをサービスを再起動し、その後、初期化スクリプトを実行します。

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm -r /usr/local/var/mysql/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

私には完璧に働きました。私は実際には自分のローカルマシンのパスワードを設定したくないので、他の解決策は実際に私が探しているものではありません
brad

3
mysql_install_dbは非推奨です。使用を検討してくださいmysqld --initialize
Brian

1
No such file or directory最初のコマンドを実行するとすぐに表示されます。
エージェントゼブラ

1
mysqld --initializeコマンドを実行した後、コンソールのログメッセージで、rootユーザーの一時パスワードが設定されていることがわかります。それをコピーし、次回コマンド "mysql -uroot -p"を実行するときにパスワードを使用します。これは確実に機能します。 。そしてmysqlはパスワードをリセットするように要求します..これを確認してください くださいdev.mysql.com/doc/refman/5.7/en/resetting-permissions.html
Vikrant Labde

@VikrantLabde「それは間違いなく動作します」-非常に野心的な声明。私はこれを試して、私に与えられた一時的なパスワードを使用しましたが、それでもアクセスを許可しませんでした。バックスラッシュで句読点をエスケープする必要がありましたか?
Max Goodridge 2017

47

自作でMySQLをインストールした後にこのエラーが発生しました。

したがって、最初にインストールを削除します。その後、Homebrewを介して再インストールします

brew update
brew doctor
brew install mysql

次に、mysqlサービスを再起動します

 mysql.server restart

次に、このコマンドを実行して、新しいrootパスワードを設定します。

 mysql_secure_installation

最後に、権限をリロードするように求められます。イエスと言う。次に、mysqlに再度ログインします。そして、設定した新しいパスワードを使用します。

mysql -u root -p

1
これは完璧なソリューションです。私はすでに走ってみましたmysql_secure_installationが、重要な部分はmysql.server restart
Johan

mysql_secure_installationが重要な要素でした
Nik

頭痛を避けるには、nirojanが言うように、restartコマンドを入力して、mysql_secure_installationを実行します
Dan Zuzevich

13

走れば

brew install mariadb
...
brew services start mariadb
==> Successfully started `mariadb` (label: homebrew.mxcl.mariadb)

 $(brew --prefix mariadb)/bin/mysqladmin -u root password newpass
/usr/local/opt/mariadb/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost''

rootアカウントでのログインも失敗します:

mariadb -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

次に、デフォルトの管理者ユーザーは、MacOSアカウントのユーザー名と同じ名前で作成されます(例:johnsmit)

rootとしてログインするには、次のコマンドを発行します。

mariadb -u johnsmit
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 17
Server version: 10.4.11-MariaDB Homebrew

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> exit
Bye

MacOSアカウント名は私のためにそれをしました。
Dan

macosアカウント名ユーザーのパスワードを追加できますか?
OrigamiEye


4

私はここでほとんどの答えに共通することに気づき、新規インストールで確認しました。mysqladmin -u rootなしで実行するための推奨事項を見ると、実際には明らかです-p

パスワードはありません。

Brewは、mysqlをrootユーザーのみでセットアップし、パスワードはまったく設定しません。これは理にかなっていると思いますが、インストール後の警告にはまったく触れられていません。


2
rootパスワードがないと想定してアクセス拒否の問題が発生したため、問題は明白ではないと思います。
Jack Frost

問題が明白だと言っているのではありません。通常の状況でMySQLを使用したことがある人にとっては、完全に混乱します。しかし、他の応答を見ると、理由は明らかです。
Spyder 2013年

3

sudo「アクセスが拒否されました」エラーを回避するために試してください:

sudo $(brew --prefix mariadb)/bin/mysqladmin -u root password NEWPASS


2
  1. アップルアイコンに移動->システム設定
  2. Mysqlを開く
  3. インスタンスでは「データベースの初期化」が表示されます
  4. それをクリックして
  5. rootのパスワードを設定するように求められます->そこに強力なパスワードを設定します
  6. そのパスワードを使用して、次回からmysqlにログインします

お役に立てれば。


シンプルで簡単な方法。ありがとう。
エゼキエルフランサ

2

質問はずっと前に尋ねられた/答えられたので、それらのトップアンサーは私にはうまくいきません。これが2020年の私の解決策です。

背景:homebrewによってインストールされた新鮮なmysql / mariadb。

問題:rootのパスワードが空ではなく、不明でもありません。

修正

  1. mysql -u YOUR-SYSTEM-USERNAME -p
  2. パスワードが空です(Enterキーを押してください)
  3. ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'NEW-ROOT-PASSWORD';
  4. FLUSH PRIVILEGES;

理由

  1. Homebrewは、現在のMacOSユーザー名で指定されたroot権限を持つユーザーを作成します。
  2. パスワードがありません
  3. すべての権限を持っているので、そのユーザーでrootパスワードをリセットするだけです。
  4. rootの初期パスワードはランダムに生成されました。

2020正解。MacOSユーザー名のパスワードを要求することができません
OrigamiEye

1

ターミナルでこれらのラインを実行することは、私と同じ問題を抱えた他の数人にとってはうまくいった。これらの手順は、brewがmysqlを正常にインストールした後にターミナルにリストされます。

mkdir -p ~/Library/LaunchAgents

cp /usr/local/Cellar/mysql/5.5.25a/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

/usr/local/Cellar/mysql/5.5.25a/bin/mysqladmin -u root password 'YOURPASSWORD'

ここYOURPASSWORDで、rootのパスワードです。


No such file or directoryこれらのコマンドを実行するとすぐに取得
エージェントゼブラ

1

ホームディレクトリに.my.cnfが隠れていないことを確認してください。それが私の問題でした。


1

これは私にとってMACで機能しましたhttps://flipdazed.github.io/blog/osx%20maintenance/set-up-mysql-osx

実行してmysqlを起動します

醸造サービスはmysqlを開始します

インストールスクリプトを実行する

mysql_secure_installation

セットアップの検証パスワードプラグインをセットアップするように求められます。これを行うには、yを入力します。

必要なパスワード検証を選択します(データベースを使用しているのがあなただけの場合は問題ではありません)

残りのすべてのオプションでyを選択します。anonを削除します。ユーザー; リモートrootログインを禁止します。テストデータベースを削除します。特権テーブルをリロードします。今、あなたはのメッセージを受け取る必要があります

All done!


mysql 5.7を起動するには、stackoverflow.com
questions / 51573145 /…を

1

これでうまくいきました。うまくいけば、これもあなたのために機能します!!! それらに従う。

brew services stop mysql
pkill mysqld
# NB: the following command will REMOVE all your databases!
# Make sure you have backups or SQL dumps if you have important data in them already.
rm -rf /usr/local/var/mysql/
brew services restart mysql

mysql -uroot
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

mysql -u root 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password 
BY'YOUR_PASS_WORD!!!!';

2
警告rm -rf /usr/local/var/mysql/する必要があります。コマンドを実行すると、コンピューター上のすべてのデータベースとMysqlデータが削除されます。
Lashae

0

mysqlをbrew経由でインストールするときのデフォルトのパスワードはrootです。これを試してください。

mysql -uroot -proot


1
From brew info mysql:MySQLデータベースをrootパスワードなしでインストールしました。これを保護するには、mysql_secure_installation
ssc

@sscクリーンインストールでパスワードを設定する最良の方法。
alexventuraio

0

ターミナル1:

$ mysql_safe

ターミナル2:

$ mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

これは回答が投稿された時点では機能していた可能性がありますが、それまでは壊れていました。(現在の)MySQLバージョン5.7.21では、「フィールドリスト」の「不明な列「パスワード」」で失敗します。
ssc 2018年

UPDATE mysql.user SET authentication_string = PASSWORD( 'xxxxxx!')WHERE User = 'root';
kevinc

0

IamはCatalinaを使用しており、mysql_secure_installation次のコマンドを使用します。

$ mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): << enter root here >>

root現在のパスワードとして入力します

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

残りを行います


0

だから、誰かが私と同じ状況と設定を持っている場合、そして私が怒りそうになった場合-これは私のために働い

長い話の後、私はそのプロセスを殺した時に再起動を自動的に保持醸造-インストールMariaDBを持っていた、(これはやって醸造者だった)だった私はなかったrootのパスワード、ではない知っているが。

$ brew services list

これは次のようなものを示しています:

mariadb started jdoe /path/to/homebrew.mxcl.mariadb.plist

MySQLサーバーを停止します。

$ brew services stop mariadb

次に、rootユーザーなしで(brewを使用せずに)再度起動します。

$ mariadbd --skip-grant-tables &

ここでmysql_secure_installationは、のために私には機能しませんでした--skip-grant-tables。また--skip-grant-tables、パスワード(私が持っていなかった)が必要だったため、なしでは機能しませんでした。
試行$(brew --prefix mysql)/bin/mysqladmin -u root password hunter2しても奇妙なエラーが返され、何もしませんでした。$(brew --prefix mariadb)/bin/mysqladmin -u root password hunter2また、機能せず、別のエラーが発生し、機能しない提案が表示されました。

しかし、認証情報なしでmysqlにログインできます。$ mysql

ここでは、「列「パスワード」は更新できない」ため、ルートのユーザーテーブルを更新する古い方法は機能しません。
新しいメソッドはalter userBUTを使用ますがflush privileges;、最初にそれを行った後にのみ機能ます。
次に:
MariaDB [(none)]> alter user 'root'@'localhost' identified by 'hunter2';
MariaDB [(none)]>MySQLはここではプロンプトです)
次にやるflush privileges;再び。
MySQLクライアントを終了します。

brewに関する限り、MariaDBはまだ実行されていない$ ps aux | grep -i mariadbため、pidと$ kill -9 <pid>それを見つけるために使用します。
次に、を使用$ brew services start mariadbして再度開始します。


-1

initファイルを使用してmysqlを起動し、ルートパスワードを変更します。

brew services stop mysql
pkill mysqld
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'newRootPass';" > /tmp/mysql-init
$(brew --prefix mysql)/bin/mysqld --init-file=/tmp/mysql-init

これで、rootパスワードが変更されました。パスワードの変更を保存するには、サーバーを適切シャットダウンしてください。新しいターミナルウィンドウで実行

mysqladmin -u root -p shutdown

新しいパスを入力してください。

サービスを開始し、initファイルを削除します

brew services start mysql
rm /tmp/mysql-init

mysqlバージョン8.0.19でテスト済み

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.