5

SOや他のいくつかの場所で多くのスレッドを読みましたが、MAMPでのmysqlのインストールを修正できませんでした。

バックグラウンド。先日、ローカルサービスを正しく接続するために、rootユーザーに変更を加えました。マシンを再起動した後、mampのphpmyadminはデータベースを表示せず、データベースを作成するための「権限なし」を表示しました。私はここや他の場所で読んだ特権を無駄に戻すために多くのことを試みました。--skip-grant-tablesが機能していないようです。シェルでrootとして接続します。ローカルホストとしての権限はありませんが、127.0.0.1として接続しています。

show grants for root@localhost;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION

MAMPの新規インストールをインストールし、DBにコピーしました。それが機能している間、私はDBがすべてのテーブルを表示していないインスタンスに遭遇しました。

だから私は2つの問題のうちの1つを解決しなければなりません。元のインストールを修正するか、新しいmampインストールですべてのテーブルがデータベースに表示されるようにする必要があります。

ここで学んだ教訓は、怠惰にならず、ローカルでrootユーザーをいじくり回して、別のログインを作成することです。

更新私が次のように接続するとき:

/Applications/MAMP/Library/bin/mysql -uroot -h127.0.0.1 -p
mysql> SHOW GRANTS FOR 'root'@'localhost';
+------------------------------------------------------------------------+
| Grants for root@localhost                                              |
+------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION    | 
| GRANT ALL PRIVILEGES ON `db`.* TO 'root'@'localhost' WITH GRANT OPTION | 
+------------------------------------------------------------------------+

しかし、私が次のように接続すると:

/Applications/MAMP/Library/bin/mysql -uroot -hlocalhost -p
mysql> SHOW GRANTS FOR 'root'@'localhost';
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
mysql> SELECT user();
+----------------+
| user()         |
+----------------+
| root@localhost | 
+----------------+
mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| @localhost     | 
+----------------+

したがって、IPまたはソケットのいずれかでローカルホストとして接続すると、どういうわけかrootとしてログインしていません。これは非常に紛らわしいと思いますか?

4

1 に答える 1

10

これで頭を殴った数日後、私は解決策を発見しました。MAMPのインストールは標準のmysqlのインストールとは少し異なるため、これらをまとめるのにしばらく時間がかかりました。私はまだいくつかの詳細を理解していませんが、ここに行きます。

ルートとしてログインしていましたが、実際には、上記と''@'localhost'で示される匿名ユーザーでした。したがって、明らかに、ユーザー名、パスワード、ホストの3つの部分からなるアクセス許可エラーがあります。そのため、rootアカウントに関する何かが変更されましたが(パスワードだと思います)、パスワードとユーザー名の組み合わせが正しくないことを通知する代わりに、権限なしでログインしていたため、全体の応答が少し不安定でした。以下のようなコマンドを実行することで、この状況を少し悪化させたと思います。

mysqladmin -u root password 'password'

最後に、これが私が行ったことです。これがOS XへのMAMPのインストール手順であることを明確にしておきますが、Windozに簡単に適応できると確信しています。

これを解決する方法の光を見るのを手伝ってくれたこのスレッドに大いに感謝します。

  1. アクティビティモニターを開きます。
  2. MAMPをシャットダウンします
  3. アクティビティモニターでmysqlがオフになっていることを確認します。これで、デフォルトのOSXmysqlが実行されている可能性のある_mysqldプロセスが実行されていることがわかります。
  4. 次のコマンドを実行し、ポート番号を使用しているものに置き換えます。これにより、mysqlからユーザー権限を差し引いたものが起動します。

    /Applications/MAMP/Library/libexec/mysqld --skip-grant-tables --port = 8889 --socket = / Applications / MAMP / tmp / mysql / mysql.sock

  5. コンソールで、資格情報なしでmysqlにログインします。

    mysql

  6. 以下のコマンドを実行します。

    FLUSH PRIVILEGES;
    GRANT ALL ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
    
  7. mysqldをシャットダウンし、skip-grant-tablesオプションなしで再起動します

  8. mysqlにログインして、動作することを確認します。

  9. phpmyadminも修正する必要があります。どういうわけか、これらの変更がすぐに伝播しないことを理解しておらず、突然作業を開始することで、これを前置きしたいと思います。

    /Application/MAMP/bin/phpMyAdmin/config.inc.phpに移動し、新しく作成したログインの正しいクレデンシャルを入力します。それらがホストを含​​めて正確であることを確認してください。

  10. 最後に、phpmyadminが機能した後、mysql.userテーブルに移動して、問題が発生した可能性のある場所を確認します。何が台無しになったのかを理解することが重要です。

MAMPのphpmyadminクレデンシャルの変更がすぐに機能しない理由など、上記で起こったことについていくつか説明したいと思います。

これがすべて役立つことを願っています!

于 2012-10-18T22:56:54.667 に答える