CentOS7 VMにmySQLをインストールしましたが、ルートでのログインに問題があります。パスワードなしでログインしようとしたか、デフォルトのもの(mysql、adminなど)を試しました。my.cnfファイルを調べましたが、パスワードがありません。サービスを停止してmysqld_safe --skip-grant-tables &
で再起動することでパスワードを変更しようとしましたが、mysqld_safe:command not found
が表示されます。他に何をすべきかわかりません。どんなヒント/アイデアも大歓迎です!
どのバージョンのmySQLを使用していますか?私は5.7.10を使用していますが、rootとしてログオンするのと同じ問題がありました
2つの問題があります。最初にrootとしてログインできない理由と、mySQLを起動してrootパスワードをリセットするために「mysqld_safe」を使用できない理由です。
インストール中にルートパスワードを設定することに対する回答はありませんが、ルートパスワードをリセットする方法は次のとおりです。
Editインストール時の初期ルートパスワードは、実行することで見つけることができます
grep 'temporary password' /var/log/mysqld.log
http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
systemd
がmysqld_safe
の代わりにmySQLの管理に使用されるようになりました(これが-bash: mysqld_safe: command not found
エラーを受け取る理由です-インストールされていません)
user
テーブル構造が変更されました。
そのため、rootパスワードをリセットするには、--skip-grant-tables
オプションを使用してmySQLを起動し、user
テーブルを更新しますが、その方法は変更されています。
1. Stop mysql:
systemctl stop mysqld
2. Set the mySQL environment option
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3. Start mysql usig the options you just set
systemctl start mysqld
4. Login as root
mysql -u root
5. Update the root user password with these mysql commands
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
-> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit
*** Edit ***
As mentioned my shokulei in the comments, for 5.7.6 and later, you should use
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Or you'll get a warning
6. Stop mysql
systemctl stop mysqld
7. Unset the mySQL envitroment option so it starts normally next time
systemctl unset-environment MYSQLD_OPTS
8. Start mysql normally:
systemctl start mysqld
Try to login using your new password:
7. mysql -u root -p
参照
http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html にあるように、
注
MySQL 5.7.6の時点で、RPMディストリビューションを使用したMySQLインストールの場合、サーバーの起動とシャットダウンはいくつかのLinuxプラットフォームのsystemdによって管理されます。これらのプラットフォームでは、mysqld_safeは不要なためインストールされなくなりました。詳細については、セクション2.5.10「systemdを使用したMySQLサーバーの管理」を参照してください。
http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html にアクセスすると、一番下のsystemctl set-environment MYSQLD_OPTS=
に言及しますページの。
パスワードリセットコマンドは http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html の下部にあります
パスワードをリセットするには、以下の手順を使用します。
$ Sudo systemctl start mysqld
MySqlサーバーのルートパスワードをリセットします。
$Sudo grep 'temporary password' /var/log/mysqld.log
次のようなものを出力します:
10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa
Mysql_secure_installationプロセスのリセット中に上記のパスワードを使用します。
<pre>
$ Sudo mysql_secure_installation
</pre>
Securing the MySQL server deployment.
Enter password for user root:
MySqlサーバーのルートパスワードを正常にリセットしました。以下のコマンドを使用して、mysqlサーバーが接続しているかどうかを確認します。
$ mysql -u root -p
http://gotechnies.com/install-latest-mysql-5-7-rhelcentos-7/
上記のKevin Jonesのアドバイスを使用して、次の--skip-networkingの変更を行い、セキュリティを少し向上させました。
Sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
[user@machine ~]$ mysql -u root
その後、パスワードをリセットしようとしたときにエラーが表示されましたが、他の場所でグーグル検索を行うと、単純に先に進むことができると示唆されました。以下が働いた:
mysql> select user(), current_user();
+--------+-----------------------------------+
| user() | current_user() |
+--------+-----------------------------------+
| root@ | skip-grants user@skip-grants Host |
+--------+-----------------------------------+
1 row in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
Query OK, 0 rows affected (0.08 sec)
mysql> exit
Bye
[user@machine ~]$ systemctl stop mysqld
[user@machine ~]$ Sudo systemctl unset-environment MYSQLD_OPTS
[user@machine ~]$ systemctl start mysqld
その時点でログインできました。
すべて、
ここでは、mysql-community-server 5.7を少しひねりながら、mysql5.7のrootパスワードをリセットする方法またはパスワードを設定する方法をいくつか紹介します。 centos7とRHEL7でも動作します。
ステップ1。最初にデータベースを停止します
service mysqld stop
ステップ2。 2番目の/etc/my.cnfファイルを変更し、「skip-grant-tables」を追加します
vi /etc/my.cnf
[mysqld] skip-grant-tables
ステップ3。 3番目の開始mysql
service mysqld start
ステップ4。 mysqlのデフォルトデータベースを選択
mysql -u root
mysql>use mysql;
ステップ4。新しいパスワードを設定します
mysql> update user set authentication_string=PASSWORD("yourpassword") where User='root'
;
step5 mysqlデータベースを再起動します
service mysqld restart
mysql -u root -p
楽しい :)
次のコマンド/etc/init.d/mysqld stopを使用して、すべてのサービスMySQLを停止してください。
mysqld_safe --skip-grant-tables
その適切に動作する可能性があります
私の場合、次のように動作します。1. mysqlを停止します:systemctl stop mysqld
MySQL環境オプションsystemctl set-environment MYSQLD_OPTS = "-skip-grant-tables"を設定します
設定したオプションを使用してmysqlを起動しますsystemctl start mysqld
ルートmysql -u rootとしてログインします
ログイン後、私はFLUSH PRIVILEGESを使用します。サーバーに許可テーブルを再ロードして、アカウント管理ステートメントが機能するように指示します。そうしないと、パスワードを更新しようとして次のエラーが表示されます。「ユーザーテーブルに一致する行が見つかりません」