web-dev-qa-db-ja.com

MySQLをWindowsに.Zipからインストールし、ルートパスワードをリセットする

私は自分の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をインストールする方法です。

  1. アーカイブを解凍し、my.iniを準備します。
  2. mysqld.exe --initializeを実行し、.errファイルから一時パスワードを取得します。
  3. MySQLをサービスとしてインストールして実行する

    mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
    
  4. 一時的なパスワードでmysql -u root -pに接続します。

  5. 一時パスワードを変更します。

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
    
8
retif

-skip-grant-tablesmysqldを開始したため、標準の [〜#〜] 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 !!!

UPDATE 2015-11-17 16:24 EST

mysql.userpasswordと呼ばれる列は、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

6
RolandoMySQLDBA