特権を付与しようとしているときに、ユーザー 'root' @ 'localhost'のアクセスが拒否されました。特権を付与するにはどうすればよいですか?

171
Steven Scotten 2011-12-13 19:26.

似たような質問をたくさん見てきたので、基本を確認したことを示しています。もちろん、それは私が完全に明白な何かを見逃していないという意味ではありません。:-)

私の質問は、なぜ私がやろうとしていることを実行する特権を持つユーザーへのアクセスを拒否され、パスワードを入力してアクセスが許可されているのですか?(完全を期すために、MySQLクライアントがプログラムの起動時にアクセスを拒否することを確認するために、間違ったパスワードを入力しようとしました。)

バックグラウンド:

ssh経由でMySQLサーバーを実行しているマシンのシェルにログインし、rootとしてログインします。

[[email protected] ~]$ mysql -u root -p -hlocalhost
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 62396
Server version: 5.5.18-log MySQL Community Server (GPL)

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

mysql> 

驚くばかり。同様の質問への回答を読んだことは、特権が付与テーブルにあるものと最新のものであることを確認する必要があることを示唆しています

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> 

次に、私が自分だと思う人であることを確認します。

mysql> SELECT user();
+----------------+
| user()         |
+----------------+
| [email protected] |
+----------------+
1 row in set (0.00 sec)

...そして本当に本当に確認してください:

mysql> SELECT current_user();
+----------------+
| current_user() |
+----------------+
| [email protected] |
+----------------+
1 row in set (0.00 sec)

mysql> 

ここまでは順調ですね。今、私はどのような特権を持っていますか?

mysql> SHOW GRANTS FOR 'root'@'localhost';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                                                                                                                                                                                                                                                                                                                                        |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '[OBSCURED]' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

これは少し読みにくいので、この方法を試してみましょう(localhost以外の「root」ユーザーがいることもわかります)。

mysql> SELECT * FROM mysql.user WHERE User='root'\G
*************************** 1. row ***************************
                 Host: localhost
                 User: root
             Password: *[OBSCURED]
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
          Reload_priv: Y
        Shutdown_priv: Y
         Process_priv: Y
            File_priv: Y
           Grant_priv: Y
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
         Show_db_priv: Y
           Super_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
         Execute_priv: Y
      Repl_slave_priv: Y
     Repl_client_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
     Create_user_priv: Y
           Event_priv: Y
         Trigger_priv: Y
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
*************************** 2. row ***************************
                 Host: [HOSTNAME].com
                 User: root
             Password: *[OBSCURED]
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
          Reload_priv: Y
        Shutdown_priv: Y
         Process_priv: Y
            File_priv: Y
           Grant_priv: Y
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
         Show_db_priv: Y
           Super_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
         Execute_priv: Y
      Repl_slave_priv: Y
     Repl_client_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
     Create_user_priv: Y
           Event_priv: Y
         Trigger_priv: Y
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
 2 rows in set (0.00 sec)

驚くばかり!MySQLは、私がroot @ localhostであり、root @localhostがこれらすべての特権を持っていると考えています。つまり、私は自分のやりたいことができるはずですよね?

mysql> GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

どうすればこの基本的なものを台無しにすることができますか?

補足:すべての特権を持つrootという名前のユーザーがいないことを提案したい人にとっては、それは素晴らしいことであり、別のユーザーにいくつかの特権を与えることができたら実行することを検討します。

ありがとうございました!

13 answers

58
Marc Alff 2012-01-24 16:51.

の出力がどのように

SHOW GRANTS FOR 'root'@'localhost';

'ALL PRIVILEGES'とは言わなかったが、root @localhostが持っているものを詳しく説明する必要があった。

ユーザーが持っていないものを付与できず、サーバーが何かがここにないと考えているように見えるため、GRANT ALLPRIVILEGESは失敗します...

さて、何が欠けていますか?

私のシステムでは、これを取得します:

mysql> select version();
+------------+
| version()  |
+------------+
| 5.5.21-log |
+------------+
1 row in set (0.00 sec)

mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for [email protected]                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM mysql.user WHERE User='root' and Host='localhost'\G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: 
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y <----------------------------- new column in 5.5
              ssl_type: 
            ssl_cipher: 
           x509_issuer: 
          x509_subject: 
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: <------------------------------- new column in 5.5
 authentication_string: <------------------------------- new column in 5.5
1 row in set (0.00 sec)

5.5には、mysql.proxies_userなどの新しいテーブルもあります。それらがあることを確認してください。

まったく新しいmysqlサーバーインスタンスをインストールする場合、インストールスクリプトは、適切な構造ですべてのmysql。*テーブルを作成します。

古いバージョンからアップグレードする場合は、適切なアップグレード手順(mysql_upgrade)が使用されていることを確認してください。これにより、不足しているテーブル/列が追加されます。

これは単なる推測ですが、このインスタンスに対してmysql_upgradeが実行されなかったため、動作が見られたようです。

72
Aryo 2012-01-22 17:19.

私もこれで同じ問題を抱えていましたが、MySQL5.1からMySQL5.5にアップグレードした後のWindowsで。私はすでに、変更の作成、およびに記載されたパスワードをリセットしようとしたここに、ここでは、ここでは、とここでは、見当もつかない。それでも同じエラーが発生します:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

私は正常に接続し、すべてのデータベースを表示し、選択と挿入を行い、ユーザーを作成して追加することができますが、GRANTに関しては、私は困惑しています。これらのアクセス拒否エラーが再び表示されます。

ここで説明されているように、MySQLサーバーのbin /ディレクトリで次のコマンドを使用して特権を修正することで、この問題を解決することができました。

C:\MySQL Server 5.5\bin> mysql_upgrade

その後、問題は解決しました。通常、MySQLはLinuxとWindowsの両方で同じコマンドを提供するため、このソリューションがLinuxでも機能することを願っています。

65
Anuj Gupta 2013-04-15 10:44.

これは、mysql.usersテーブルがroot以外のユーザーの立ち入り禁止と見なされるため、すべてのテーブルに対するすべての権限を別のユーザーに付与しようとしたときに発生する可能性があります。

ただし、以下は機能するはずです。

GRANT ALL PRIVILEGES ON `%`.* TO '[user]'@'[hostname]' IDENTIFIED BY '[password]' WITH GRANT OPTION;

*。*の代わりに `%`。*を使用することに注意してください

7
phil_w 2013-05-02 06:53.

これは、ディストリビューションに付属しているバージョンよりも高いバージョンのMySQLをインストールしようとしたときに発生しました。

古いバージョンを消去してから新しいバージョンをインストールしました(rpm -e ...次にrpm-i MySQL-server *)が、/ var / lib / mysql内のファイルがまだ古いバージョンのものであることに気づきませんでした( Marc Alffによる説明-ありがとう!)

mysql_upgradeを実行することもできましたが、最初からやりたかったので、次のようにしました。

# su - mysql
$ rm -rf /var/lib/mysql/* $ mysql_install_db
# /etc/init.d/mysql start

次に、rootパスワード(/ usr / bin / mysqladmin -u root password)を設定すると、すべてがGRANTコマンドで期待どおりに機能しました...

6
tzp 2013-10-03 02:32.

私は同じ問題を抱えていました。つまり、rootに付与されたすべての特権です。

SHOW GRANTS FOR 'root'@'localhost'\G
*************************** 1. row ***************************
Grants for [email protected]: GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*[blabla]' WITH GRANT OPTION

...ただし、テーブルの作成は許可されていません。

 create table t3(id int, txt varchar(50), primary key(id));
ERROR 1142 (42000): CREATE command denied to user 'root'@'localhost' for table 't3'

まあ、それは迷惑なユーザーエラーが原因でした。つまり、データベースを選択しませんでした。USE dbnameを発行した後、正常に機能しました。

6
gloriphobia 2018-08-15 01:10.

MySQLバージョン8がインストールされている(私のように)この質問に来て、満足のいく答えが見つからなかった可能性があります。バージョン8では、次のようなユーザーを作成できなくなりました。

GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]' WITH GRANT OPTION;

返されるかなり紛らわしいエラーメッセージは次のとおりです。 ERROR 1410 (42000): You are not allowed to create a user with GRANT

バージョン8でユーザーを作成するには、次の2つの手順で作成する必要があります。

CREATE USER 'steves'@'[hostname].com' IDENTIFIED BY '[OBSCURED]';
GRANT ALL PRIVILEGES ON *.* TO 'steves'@'[hostname].com' WITH GRANT OPTION;

もちろん、必要に応じて、(の代わりにGRANT ALL PRIVILEGES)限られた数の特権を提供することもできます。GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER

5
Mithun Sasidharan 2011-12-13 19:57.

基本的に、このエラーは、パスワードを指定していない場合に発生します。これは、一部のオプションファイルに間違ったパスワードがリストされていることを意味します。

アカウントにパスワードを割り当てて管理する方法を理解するには、このDOCをお読みください。

また、フォルダの権限/var/lib/mysql/mysqlが711かどうかを確認してください。

5
William Turrell 2015-01-22 09:41.

MySQL 5.5.40を搭載したDebian(Wheezy、7.8)でSELECT * FROM mysql.user WHERE User='root'\GEvent_privおよび 'Trigger_priv`フィールド存在するが、Yに設定されていないことがわかりました。

mysql_upgrade(ありまたはなしで--force)実行しても違いはありません。私はマニュアルをする必要がありました:

update user set Event_priv = 'Y',Trigger_priv = 'Y' where user = 'root'

そして最後に私は使うことができました:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION

…そして、それを個々のデータベース/ユーザーアカウントでより正確に使用します。

3
Nav 2014-08-08 00:28.

入力SHOW GRANTS FOR 'root'@'localhost';すると、あいまいなパスワードが表示されたので、別のシステムでHeidiSQLを使用rootして(ユーザー名と対応するパスワードとして使用して)そのシステムのmysqlにログインし、入力しました。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'thepassword' WITH GRANT OPTION;

システムに戻ってログオンしたときに機能しました
mysql -uroot -pthepassword;

2
pevik 2013-05-27 06:18.

mysqlのバグであるperformance_schemaに特権を追加しようとしたときに、これで実行します http://bugs.mysql.com/bug.php?id=44898 (--single-transactionを追加するための回避策)。

2
kurdtpage 2018-01-29 12:25.

私も同じ問題を抱えていて、SOの投稿とGoogleのドキュメントを読むのに多くの時間がかかりました。私はついにこれをCloudSQL FAQから見つけました:

Google Cloud SQLはSUPER権限をサポートしていませんGRANT ALL PRIVILEGES。つまり、ステートメントは機能しません。別の方法として、GRANT ALL ON `%`.*

1
mopo922 2015-04-04 08:49.

私のようにまだこれに遭遇している人にとっては、試みられたGRANTものがまだ存在していないことを確認する価値があります:

SHOW GRANTS FOR username;

私の場合、エラーは実際には許可エラーがあったためではなく、GRANTすでに存在していたためです。

1
suspectus 2019-11-24 06:52.

mysqlの「アクセスが拒否されました」エラーに直面したときに常に機能する1つの簡単な解決策:を使用しますsudo

sudo mysql -u root

次に、GRANTコマンドに必要な権限が存在します。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

グッドジョブ、ESPN

グッドジョブ、ESPN

今日のホワイトハウスの記者会見で、報道官のサラ・ハッカビー・サンダースは、スポーツセンターのホストであるイェメル・ヒルのドナルド・トランプに関する最近のツイートについてコメントするよう求められ、大統領と彼の政策を白人至上主義者として説明した。ヒルは彼女のつぶやきのためにESPNによって公に叱責されました。

アマゾンからのこのレミントンツールセールで髪を整える、スタイルを整える、乾かす、または取り除く

アマゾンからのこのレミントンツールセールで髪を整える、スタイルを整える、乾かす、または取り除く

基本的に頭のあらゆる部分から髪の毛を整えたり、ブロードライしたり、まっすぐにしたり、脱毛したりする必要がある場合は、このレミントンゴールドボックスが最適です。今日だけ、Amazonは、すでに人気のあるShortcut Pro Self-HaircutKitやPearlPro Ceramic Flat Ironのように、グルーミングをはるかに簡単にするヘアツールをマークダウンしています。

カナダの元桂冠詩人が、史上最高の文化の盗用でトゥパックとマヤアンジェロウから盗んだ

カナダの元桂冠詩人が、史上最高の文化の盗用でトゥパックとマヤアンジェロウから盗んだ

トゥパックシャクール(ティムモーゼンフェルダー/ゲッティイメージズ); マヤアンジェロウ(マーティンゴッドウィン/ゲッティイメージズ)移動、テイラースウィフト。ケンドールとカイリーは、必要な数の座席を持っています。

テスラは、ハリケーンイルマによる避難を容易にするために、フロリダでの車両の範囲を拡大しています

テスラは、ハリケーンイルマによる避難を容易にするために、フロリダでの車両の範囲を拡大しています

写真:Tesla Motorsフロリダに住んでいて、Tesla Model S、Model X 60、またはModel 60Dを使用している場合、車の自律性は50 km(約30マイル)高くなります。これは失敗ではなく、ハリケーンイルマによる避難作業を容易にするために会社自身が命じた自治権の一時的な延長です。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

投資ノート:Bioscout AU$300万シード

投資ノート:Bioscout AU$300万シード

Bioscoutは、農家を運転席に置くという使命を負っています。Artesian(GrainInnovate)やUniseedと並んで、最新のシードラウンドでチームを支援できることをうれしく思います。問題真菌症による重大な作物の損失は、農民にとって試練であることが証明されています。

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

リトルマーケットリサーチ1| 2022年のクイックグリンプス遠隔医療市場

遠隔医療は、パンデミック後の時代では新しいものではなく、時代遅れの分野でもありません。しかし、業界を詳しく見ると、需要と供給の強力な持続可能性と、米国で絶え間ない革命となる強力な潜在的成長曲線を示しています。

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

スタートアップ資金調達環境:タイのスタートアップエコシステムの次は何ですか?

2021年は、世界的なベンチャーキャピタル(VC)の資金調達にとって記録的な年でした。DealStreetAsiaによると、東南アジアも例外ではなく、この地域では年間で記録的な25の新しいユニコーンが採掘されました。

ムーアの法則を超えて

ムーアの法則を超えて

計算に対する私たちの欲求とムーアの法則が提供できるものとの間には、指数関数的に増大するギャップがあります。私たちの文明は計算に基づいています—建築と想像力の現在の限界を超える技術を見つけなければなりません。

Language