質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

1462閲覧

MySQLで rootのパスワードを設定していなかったのにパスワードがないと入れず、mysqld_safe --skip-grant-tables で入って設定し直したいが、それもできない

oyatsu8

総合スコア97

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2022/09/06 06:28

編集2022/09/08 13:46

前提

MySQL初心者です。
MySQLで rootのパスワードを設定していなかったので、 rootのパスワードをリセットする方法でやろうとしたのですが、エラーが出て自力で解決できなかったため質問させていただきます。

環境

macOS Monterey 12.3.1(M1,2020)
Mysql Ver 8.0.30 for macos12.4 on arm64 (Homebrew)
Python 3.8.9

参考にした記事

B.3.3.2 root のパスワードをリセットする方法
https://dev.mysql.com/doc/refman/8.0/ja/resetting-permissions.html

発生している問題・エラーメッセージ

最初にこうしたのですが入れず、 % mysql ERROR 1045 (28000): Access denied for user 'ユーザー名'@'localhost' (using password: NO) このようにしても入れず、、 % mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

そこで、 % mysqld_safe --skip-grant-tables & して、ターミナルを新しく開き、ALTER USERで root に設定したパスワードを入れましたが、下記のエラーが出ました。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '設定したパスワード'; ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

試したこと

(mysqlをインストール)

% mysql.server stop
Shutting down MySQL
. SUCCESS!
ユーザー名@パスワード-2 mysql % mysqld_safe --skip-grant-tables &

//ここにもエラーらしきものが、、
[1] 47244
ユーザー名@パスワード-2 mysql % 2022-09-06T06:17:10.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/パスワード-2.local.err'.
2022-09-06T06:17:10.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql

//もう一つターミナルを立ち上げ
% mysql
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード;
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
mysql>

コメントを参考にしながら自己解決

その後、再び
mysqld_safe --skip-grant-tables
をたたき、
別ウィンドウを開き、
use mysql;
select user,host from user;
したところ、ユーザーがいなかったので、mysql.infoschema を作り、権限を与えたところ、mysql.infoschemaで入れるようになりました。
これで解決したと言えるのかわからないのですが、アドバイスを参考にしながらなんとかパスワードも設定し、それで入れるようになりました。
アドバイスくださったquickquipさん、Matsumon0104さんに感謝します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2022/09/06 07:06

> MySQLで rootのパスワードを設定していなかった mysql -u root でパスワードなしで入れる(た)のでは? インストールした時に We've installed your MySQL database without a root password. と言われますよ。
oyatsu8

2022/09/06 07:12

ありがとうございます。設定していなかったつもりなのですが、下記のようになってしまいます、、 % mysql -u root ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) % mysql ERROR 1045 (28000): Access denied for user 'phirip'@'localhost' (using password: NO)
quickquip

2022/09/06 07:19

質問の説明が間違っているということなので修正してください。
quickquip

2022/09/06 07:33

mysqld_safe --skip-grant-tables が起動しない理由を探るべきなのでエラーを載せるといいかと思います。
oyatsu8

2022/09/06 13:11

ありがとうございます。mysqld_safe --skip-grant-tablesは起動できています。 % mysqld_safe --skip-grant-tables & で、新しいターミナルで % mysqlで起動しています。
quickquip

2022/09/06 13:41

起動できているならalter userが成功するはずなのでその確信は持てないです 何を見て起動できているという確信を持ちましたか プロセスIDなどを確認したとかですか
oyatsu8

2022/09/06 14:26 編集

すみません、mysql>  と、 MySQLが起動するということは、mysqld_safe --skip-grant-tables が成功していることだと思っていました、、そのため、mysqld_safe --skip-grant-tablesは正常に動いていて、% mysql -u rootだけうまくいかないと思い込んでいました。
guest

回答2

0

ベストアンサー

何度か試してみて、どうも

mysql.server stop

SUCCESS!と出ているのに、mysqlは停止していなくてpidファイルだけ消えているということが時々起こりますね。
追記: mysqlは停止しているのにpidファイルは残っている も遭遇しました

brew services stop mysql (数秒待つ) mysqld_safe --skip-grant-tables &

の方が良さそうです。

パスワードを変更したらマシンごとリブートしていいかもしれません。


mysqlのデータをすべて削除してしまっていいなら

brew services stop mysql rm -Rf /opt/homebrew/var/mysql brew postinstall mysql brew services start mysql

でもよさそうです。 参考
homebrewでインストールした直後の状態になるので、rootパスワードも空になります。


(追記)
mysqld_safe --skip-grant-tablesする前に

ps aux | grep mysql | grep -v grep

あたりを実行して空になる(=mysqldが実行されてない)ことを確認。

mysqld_safe --skip-grant-tables&を付けずにフォアグラウンドで実行して

【時刻】 mysqld_safe Logging to '/opt/homebrew/var/mysql/【マシン名】.local.err'. 【時刻】 mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql

とでてプロンプトに復帰しないことを確認。

別のターミナルで

ps aux | grep mysql | grep -v grep

してmysqldが起動していることを確認してmysqlからalter userする。

と確実に手順ごとに望む動作になっているかを確認していったらいいかと思いました。

投稿2022/09/06 08:45

編集2022/09/07 06:05
quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oyatsu8

2022/09/06 09:43

ありがとうございます。もう少し試してみてどうにもならなかったら、インストールした直後の状態に戻そうと思います。
oyatsu8

2022/09/07 04:57 編集

ありがとうございます。 ps aux | grep mysql | grep -v grep を入力すると、空になっていませんでした。 test-2.local.pidというものが2つ入っていました。 % ps aux | grep mysql | grep -v grep ユーザー名 53046 0.1 0.1 409642704 18464 s003 S 11:59AM 0:12.64 /opt/homebrew/Cellar/mysql/8.0.30/bin/mysqld --basedir=/opt/homebrew/Cellar/mysql/8.0.30 --datadir=/opt/homebrew/var/mysql --plugin-dir=/opt/homebrew/Cellar/mysql/8.0.30/lib/plugin --log-error=test-2.local.err --pid-file=/opt/homebrew/var/mysql/test-2.local.pid ユーザー名 52935 0.0 0.0 408630944 1056 s003 S 11:59AM 0:00.02 /bin/sh /opt/homebrew/Cellar/mysql/8.0.30/bin/mysqld_safe --datadir=/opt/homebrew/var/mysql --pid-file=/opt/homebrew/var/mysql/test-2.local.pid なんか出てきたので、killしました。 % kill 53046 % kill 52935 % mysqld_safe --skip-grant-tables を実行すると、エラーが出てきたのですが起動したので 2022-09-07T04:51:33.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/test-2.local.err'. 2022-09-07T04:51:33.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql 下記のように入力しましたが、ERROR 1290 (HY000)が出ました。 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード'; ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
quickquip

2022/09/07 05:11

特に書きませんでしたが FLUSH PRIVILEGES; は要ります。
oyatsu8

2022/09/07 05:54

FLUSH PRIVILEGES; もやってみたのですがダメでした。初歩的な質問だと思うのですが、mysqld_safe --skip-grant-tablesと&を付けずにフォアグラウンドで実行して 【時刻】 mysqld_safe Logging to '/opt/homebrew/var/mysql/【マシン名】.local.err'. 【時刻】 mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql とでてプロンプトに復帰しないことを確認。というのはどういう意味でしょうか?マシン名】.local.errを見て何かを修正しないといけないのでしょうか
oyatsu8

2022/09/07 06:03 編集

ちなみに、今回の流れは下記のようにしました。 % ps aux | grep mysql | grep -v grep 何も出ず % mysqld_safe --skip-grant-tables 2022-09-07T05:49:58.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/test-2.local.err'. 2022-09-07T05:49:58.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql 新しいターミナルを開き % mysql mysql> FLUSH PRIVILEGES; mysql> use mysql Database changed mysql> SELECT user, host, authentication_string FROM user; Empty set (0.00 sec) しかし、mysqlでもmysql -u root -pでもERROR 1045でした。 % mysql ERROR 1045 (28000): Access denied for user 'ユーザー名'@'localhost' (using password: NO) ユーザー名@test-2 mysql % mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
quickquip

2022/09/07 06:04

その2行だけが表示されたら、あとはそのシェルではmysqldが実行中になってプロンプトに戻ってこないのが正常で、プロンプトに戻ってきたらなにかが異常終了してます、ということです。 実行するのは FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'パスワード; ですよね?
quickquip

2022/09/07 06:05

回答でalter tableと書いてますね。失礼しました。
oyatsu8

2022/09/07 07:05 編集

ありがとうございます。どうにもわからず、、アンインストールしようかと思います。
guest

0

「root」の初期パスワードは「mysqld.log」内に記載されています。
変更したことが無いということであれば、この初期パスワードが有効でしょう。
MySQLの初期パスワードのありか

投稿2022/09/06 06:37

Matsumon0104

総合スコア1005

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oyatsu8

2022/09/06 07:06

ありがとうございます。mysqld.logを探しているのですが、見つからず、、mysqlを homebrew からインストールした場合は/var/log/mysqld.logにはないのでしょうか、、
Matsumon0104

2022/09/06 07:13 編集

こういったところにないですか? 「/usr/local/var/mysql/」 もしくは、検索 sudo find / -name mysqld.log
oyatsu8

2022/09/06 09:46

ありがとうございます。/usr/local/まではあるのですが、varからがありませんでした。M1だと置き場が違うのでしょうか(最近使い始めたところでまだ把握しておらず 汗)mysqld.logを探してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問