web-dev-qa-db-ja.com

mysql 5.7の新規インストールでのrootパスワードの設定

CentOS Linux release 7.2.1511を含むサービングにmysqlをインストールしようとしています。プロセスのインストールを見てください:

# Sudo yum install mysql-server

出力:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

私はmysqlデーモンを実行しました:

# Sudo service mysqld start

サービスの確認:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

ここに私を狂わせる問題が来ます。初めてrootパスワードを設定したいので、次のようにしました。

# Sudo mysql_secure_installation
// when password is required, I just type "enter key"

しかし、出力:MySQLサーバーデプロイメントの保護。

ユーザーrootのパスワードを入力してください:エラー:ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)

エラーをグーグルで処理する場合、90%の場合、解決策はmysqld_safe --skip-grant-tables &コマンドを呼び出すことです。

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

ただし、mysqld_safeは「コマンドが見つかりません」というエラーを表示します。私はSudo mysqld --skip-grant-tables &でもテストしましたが、何もしません。ルートパスワードを設定するために、正しい方向に案内していただければ幸いです。前もって感謝します。

11
manix

解決策についての非常識な調査で、私は/var/log/mysqld.logとこの行を見つけました:

[注意] root @ localhostに一時的なパスワードが生成されます:abc123

Mysql 5.7以降では、インストール時にランダムなパスワードが生成され、そのファイルでプロンプトが表示されます。

9
manix

Rootユーザーでmysqlコマンドを実行するだけの場合、root @ localhostでソケット認証が有効になっているため、パスワードを要求されることなくアクセスが許可されます。

このガイドは誤解を招くものです。

パスワードを設定する唯一の方法は、次のようなネイティブ認証に切り替えることです。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
18
Vadim Smilansky

以下の手順でパスワードをリセットします。

$ Sudo systemctl start mysqld

MySQLサーバーのrootパスワードをリセットします。

$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プロセス中に上記のパスワードを使用します。

$ Sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

MySQLサーバーのrootパスワードが正常にリセットされました。以下のコマンドを使用して、MySQLサーバーの接続を確認します。

$ mysql -u root -p

私の記事を参照してください: RHEL/Centos 7に最新のMySQL 5.7をインストール

7
Arvind

上記のすべてが私にとってはうまくいかなかったので、MYSql WebサイトからSO上のすべてのものへの他のすべての提案を1時間以上試してみましたが、ようやく動作しました:

注:ユーザーrootのEnter passwordが表示されていましたが、元のパスワードを持っていなかったため、新しいパスワードとして使用するのと同じパスワードを入力しました。

注: /var/log/mysqld.logはなく、/ var/log/mysql/error.logのみでした

  1. 現在のmysqld pidを終了します
  2. mysqldをSudo/usr/sbin/mysqld&で実行します
  3. / usr/bin/mysql_secure_installationを実行します

    mysql_secure_installationからの出力

    root @ myServer:〜#/ usr/bin/mysql_secure_installation

    MySQLサーバーのデプロイメントの保護。

    ユーザーrootのパスワードを入力してください:

    VALIDATE PASSWORD PLUGINを使用して、パスワードをテストし、セキュリティを向上させることができます。パスワードの強度をチェックし、ユーザーが十分に安全なパスワードのみを設定できるようにします。 VALIDATE PASSWORDプラグインをセットアップしますか?

    はいの場合はy | Y、いいえの場合はその他のキーを押します。 rootのパスワードを変更しますか? ((はいの場合はy | Y、いいえの場合はその他のキーを押します):y

    新しいパスワード:

    新しいパスワードの再入力:デフォルトでは、MySQLインストールには匿名ユーザーがあり、ユーザーアカウントを作成しなくても、誰でもMySQLにログインできます。これはテストのみを目的としており、インストールを少しスムーズにするためのものです。本番環境に移行する前に削除する必要があります。

    匿名ユーザーを削除しますか? (はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    通常、ルートは「localhost」からの接続のみを許可されるべきです。これにより、誰かがネットワークからrootパスワードを推測できないようになります。

    リモートからのrootログインを禁止しますか? (はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    MySQLにはデフォルトで、誰でもアクセスできる「test」という名前のデータベースが付属しています。これもテストのみを目的としており、運用環境に移行する前に削除する必要があります。

    テストデータベースを削除してアクセスしますか? (はいの場合はy | Y、いいえの場合はその他のキーを押します):y

    • テストデータベースを削除しています...成功しました。

    • テストデータベースの権限を削除しています...成功しました。

    特権テーブルを再ロードすると、これまでに行ったすべての変更がすぐに有効になります。

    特権テーブルを今すぐ再ロードしますか? (はいの場合はy | Y、いいえの場合はその他のキーを押します):y成功。

    全部終わった!

3
JGlass