私は自分のPC(Windows 8.1 x64)にMySQLサーバーのみを置きたいと思っていました。ワークベンチなどはありません。それで、私は dev.mysql.com/downloads から.Zip
アーカイブをダウンロードしました。 x86_64バージョン5.7.9(MySQL Community Server(GPL))上のWin64のダウンロードです。
Windowsサービスとしてインストールしましたが、mysql
データベースはなく、information_schema
のみでした。だから私はこれを実行しました:
mysql_upgrade.exe --upgrade-system-tables
そして、mysql
データベースが作成されました。しかし、それに伴ってmysql
にアクセスできなくなったため、rootユーザーで何かが起こりました。
そこで、突然現れたこのパスワードをリセットすることにしました(その前にパスワードを持っていなかったためです)。私は公式マニュアルに次の解決策を見つけました、私はこのようにサーバーを起動しました:
mysqld.exe --skip-grant-tables --console
次に、mysql
をパスワードなしで開きました。
mysql.exe –u root
そして、ルートパスワードをリセットしようとしました:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
しかし、私はこのエラーを受け取りました:
エラー1131(42000):MySQLを匿名ユーザーとして使用しており、匿名ユーザーはパスワードを変更できません。
これは何ですか?どのように私は匿名ですか?すべてのコマンドは、アドミニストレーターの下のcmd.exe
で実行されました。
この状況でrootパスワードをリセットするにはどうすればよいですか?
Update 1:現在のユーザーを確認しようとしました:
SELECT USER(), CURRENT_USER();
それは与える:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
mysql.exe -u root
のように始めたので、それは奇妙です。
次に、ユーザーテーブルを確認しました。
SELECT user FROM mysql.user;
それは与える:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
それはさらに奇妙です。また、パスワードフィールドはありません。
SELECT user, password FROM mysql.user;
エラー1054(42S22):「フィールドリスト」の列「パスワード」が不明です
そのため、パスワードを変更できません。
そして、私は新しいユーザーを作成できません:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
エラー1290(HY000):MySQLサーバーは
--skip-grant-tables
オプションで実行されているため、このステートメントを実行できません
今、私は迷っています。
更新2:たぶん、私は最初からすべてを間違っていました。どうやら、mysqld.exe --initialize
コマンドを何らかの方法で逃しました。
したがって、これは@ RolandoMySQLDBAのおかげで、.Zip-archiveからMySQLをインストールする方法です。
my.ini
を準備します。mysqld.exe --initialize
を実行し、.err
ファイルから一時パスワードを取得します。MySQLをサービスとしてインストールして実行する
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
一時的なパスワードでmysql -u root -p
に接続します。
一時パスワードを変更します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
-skip-grant-tables でmysqld
を開始したため、標準の [〜#〜] grant [ 〜#〜] 、 [〜#〜]取り消し[〜#〜] 、または SET PASSWORD コマンド。それにもかかわらず、次のようにroot@localhost
のパスワードを変更できます。
UPDATE mysql.user SET password=PASSWORD(‘passhere') WHERE user='root' and Host='localhost';
次に、mysqldを再起動すると、ビジネスに戻ります。
あなたが匿名であることに関して、あなたが今ログインして実行すると
SELECT USER() HowYouAttemptedToLogin,CURRENT_USER() HowYouWereAllowedToLogin;
HowYouWereAllowedToLogin
には空白のユーザー名といくつかのホストがあることに注意してください。
GIT IT A TRY !!!
mysql.user
のpassword
と呼ばれる列は、MySQL 5.7には存在しません。
名前はauthentication_string
に変更されました。
あなたがしなければならないことは実行されます
mysqld --initialize
これにより、データフォルダーが作成されます。
Root @ localhostには一時的なパスワードが割り当てられています。これは、次の日時と文字列で始まるエラーファイルに表示されます。
2015-11-17T20:56:02.175980Z 1 [Note] A temporary password is generated for root@localhost:
それを使ってログインし、ALTER USER
を実行することができます
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
MySQL 5.7のドキュメントを参照してください SET PASSWORD