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


11

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

# 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 &、何も実行されません。ルートパスワードを設定するために、正しい方向に案内していただければ幸いです。前もって感謝します。


これらのバイナリがにある必要がありPATHます。または、フルパスが必要です。(これはMySQLの質問というよりLinuxの質問です)
Rick James

回答:


18

rootユーザーでmysqlコマンドを実行すると、root @ localhostでソケット認証が有効になるため、パスワードを要求されずにアクセスが許可されます。

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

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

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

あなたは救世主です!チャームとして働く!
ズゴール

9

解決策に関する非常識な調査で、私は調べて/var/log/mysqld.log次の行を見つけました。

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

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


7

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

$ 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をインストールします


3

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

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

注: /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成功。

    全部終わった!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.