web-dev-qa-db-ja.com

MySQL rootの問題(rootユーザーのアクセスが拒否されました)

MySQL(5.5)のrootユーザーに非常に奇妙な問題があります。外部ホストがrootユーザーにアクセスすることを許可しようとしていますが、私のroot @ localhostにはローカルデータベースへの "GRANT OPTION"がないようです!この時点での問題は、2つのroot @ localhostユーザーがいて、どちらも異なる付与ルールを持っていると思うのですが、インストールに戻す方法がわかりません。

私はすでにルートユーザーを削除して再作成しようとしました(私は思う)、ルートユーザーのパスワードをリセットします(mysqlデータベース自体を変更します)

いつも指定しているパスワードではなく、どのようにして取得したかさえわからない代替パスワードを使用してrootアカウントにアクセスすることはできません...この代替ユーザーは、完全なものではないようですroot権限ですが、まだrootと呼ばれています。

-解決策は以下に掲載-

4

解決策を見つけました-これは、MySQLをMySQL 5.1からMySQL 5.5に更新し、認証スキーマ(MySQLデータベース自体)を一緒に移動したことが原因です。 5.5データベースでこのスキーマを使用するこのスキーマへのコアアップデートがあるため、単純に2つの主要なバグを引き起こして機能しません:ルートMysqlユーザーが削除されたため、権限を付与できません

2

認証を無効にしてMySQLを起動できます。そこから、MySQLの管理アカウントを作成/削除できます。

MySQLのドキュメントに記載されている詳細: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

  1. MySQLをシャットダウンする
  2. MySQLを起動します:mysqld --skip-grant-tables --skip-networking
  3. Mysqlで実行:

    UPDATE mysql.user SET Password = PASSWORD( 'MyNewPass')WHERE User = 'root';

    ですべての権限を付与します。GRANT OPTIONを指定して 'root' @ 'localhost'にします。

  4. MySQLをシャットダウンする

  5. 通常どおりにMySQLを起動します。
6

「root」@「localhost」とは異なる「root」@「127.0.0.1」でサーバーにアクセスしてみてください。次に、コマンドを発行してユーザー「root」@「localhost」を作成し、それにすべての特権を付与します

1
Kabir Hossain

これが私がWindowsシステムで従ったいくつかのステップです

  1. (rootの権限を削除したアカウントから)権限を持つユーザーを使用して、mysqlにログインします。
  2. コマンド_use mysql;_を使用してデータベースmysqlを選択します
  3. 次のコマンドを実行して、ユーザーを更新します。

UPDATE mysql.user SET PASSWORD=PASSWORD('MyNewPass') WHERE USER='root';

  1. _FLUSH PRIVILEGES;_

  2. _GRANT ALL ON *.* TO 'root'@'localhost';_

  3. ユーザーからログアウトし、上記の手順でうまくいった新しいパスワードを使用してrootにログインしました

0
Vinod Kabadi

入力SHOW GRANTS FOR 'root'@'localhost';は不明瞭なパスワードを見せてくれたので、そのシステムのmysqlに別のシステムでHeidiSQLを使用してログインし(rootをユーザー名と対応するパスワードとして使用)、次のように入力しました。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'thepassword' WITH GRANT OPTION;

そしてそれは私がシステムに戻って使用してログオンしたときに機能しました
mysql -uroot -pthepassword;

0
Nav

余分なroot @ localhostエントリを削除する必要があります。これは、Mircea Vutcoviciによって提案されている「--skip-grant-tables」を使用して、またはrootとしてアクセスできる場合は通常のセッション(ローカルまたはリモート)で実行できます。

次のようなものを試してください:

#get to admin tables
use mysql
#confirm the differences for the root entries
select Host, user, grant_priv from user where user = 'root'; 
#adjust as needed
delete from user where user = 'root' and Host = 'localhost' and grant_priv = 'N';
#commit
flush privileges;

更新:選択テストで示した出力によると、grant_privsが異なる複数のルートに問題があるようには見えません。したがって、Mircea Vutcoviciからのアドバイスで問題が解決しない場合は、実際の問題はroot特権にあると推測できます。たぶん、間違ったホストに接続しようとしたり、設定ファイル(.my.cnf)に保存されているパスワードを使用したりするなど、他のことを間違って行っている可能性があります。つまり、もっと具体的にする必要があるかもしれません。

0
igelkott