1. ホーム
  2. SQL

windows mysql prompt access denied for user ''@'localhost' to database.

2022-02-23 07:28:03

最近、mysql、バージョン'5.6.20'を使用しています。

公式サイトにて http://dev.mysql.com/downloads/mysql/ 最新のwindowsインストール版をダウンロードし、その後インストールします。私はカスタムインストールモードを選び、インストールパスを設定し、そのまま次へ。

<スパン インストールが完了したら、コマンドラインcmdでインストールパスのbinディレクトリを入力し、私のディレクトリは "D:♪Program FilesMySQL ♪MySQL Server 5.6 ♪bin" です。

mysqlにrootアカウントで "mysql -u root" と記述して接続し、データベースを作成すると、以下のエラーが発生します。

エラー 1044 (42000)。データベース 'mydb' へのユーザー ''@'localhost'' のアクセスが拒否されました。

その理由は なぜなら、mysqlデータベースのユーザーテーブルに、ユーザー名が空のアカウント、つまり匿名アカウントがあり、エラーメッセージの''@'localhost''でわかるように、rootを使っているにもかかわらず匿名ログインになってしまうのです。

<スパン ネット上の解決策の多くはlinuxでのものですが、windowsでのコマンド入力には違いがあるため、ネット上で試行錯誤を探した結果、ようやくより効果的な方法を発見し、以下のように整理しました。

<スパン cmd mode into bin directory of mysql, enter D:\Program FilesMySQL↪MySQL Server 5.6bin>
mysqld --defaults-file="D:♪Program FilesMyMSQL ♪MySQL Server 5.6my-default.ini" --console --skip-grant-tables を入力します。

2014-08-29 10:40:48 0 [警告] 暗黙のDEFAULT値を持つTIMESTAMPは非推奨です。
2014-08-29 10:40:48 8108 [ノート] プラグイン「FEDERATED」は無効です。
2014-08-29 10:40:48 8108 [ノート] InnoDB: アトミックを使ってバッファプールページの参照カウントを行う
2014-08-29 10:40:48 8108 [ノート] InnoDB: InnoDBのメモリヒープが無効になっている
2014-08-29 10:40:48 8108 [Note] InnoDB: Mutexesとrw_locksはWindowsのインターロック関数を使用しています。
2014-08-29 10:40:48 8108 [ノート] InnoDB: メモリバリアが使用されていません。
2014-08-29 10:40:48 8108 [ノート] InnoDB: 圧縮されたテーブルは zlib 1.2.3 を使用します。
2014-08-29 10:40:48 8108 [ノート] InnoDB: CPUのcrc32命令を使用しない。
2014-08-29 10:40:48 8108 [Note] InnoDB: バッファプールを初期化、サイズ = 128.0M
2014-08-29 10:40:48 8108 [ノート] InnoDB: バッファプールの初期化を完了しました。
2014-08-29 10:40:48 8108 [Note] InnoDB: 最高にサポートされているファイル形式はバラクーダです。
2014-08-29 10:40:57 8108 [Note] InnoDB: 128ロールバックセグメント(複数可)がアクティブです。
2014-08-29 10:40:57 8108 [Note] InnoDB: パージの開始を待っています。
2014-08-29 10:40:57 8108 [ノート] InnoDB: 5.6.20 開始; ログシーケンス番号 1625997
2014-08-29 10:40:57 8108 [ノート] サーバーホスト名(バインドアドレス): '*'; ポート: 3306
2014-08-29 10:40:57 8108 【注意】IPv6が利用可能です。
2014-08-29 10:40:57 8108 [ノート] - '::' は '::' に解決されます。
2014-08-29 10:40:57 8108 [ノート] IP: ':' にサーバーソケットが作成されました。
2014-08-29 10:40:58 8108 [Note] mysqld: ready for connections.
バージョン:'5.6.20' socket: '' ポート 3306 MySQL コミュニティサーバ (GPL)

この結果を見ることは、MySQL が稼働していることを意味します。
2. 2. 別の dos ウィンドウを開き、もう一度 mysql bin ディレクトリに移動します。 mysql -u root mysql と入力します。

<スパン MySQLモニターへようこそ!コマンドは;または♪で終わります。

MySQLの接続IDは1です。
サーバーバージョン: 5.6.20 MySQL Community Server (GPL)

mysql>
mysqlデータベースが接続され、mysqlのコマンドを入力できるようになりました。

3. パスワードの設定

mysql> update user set password=PASSWORD('password') where user='root';
クエリ OK、2 行が影響を受けました (0.02 秒)
一致した行数です。3 変更: 2 警告: 0

mysql>  フラッシュ権限 
mysql>  やめる

その後、通常の方法でmysqlに接続することができます。接続できない場合は、mysqlのサービスが立ち上がっているかどうかを確認してください。