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 &
でもテストしましたが、何もしません。ルートパスワードを設定するために、正しい方向に案内していただければ幸いです。前もって感謝します。
解決策についての非常識な調査で、私は/var/log/mysqld.log
とこの行を見つけました:
[注意] root @ localhostに一時的なパスワードが生成されます:abc123
Mysql 5.7以降では、インストール時にランダムなパスワードが生成され、そのファイルでプロンプトが表示されます。
Rootユーザーでmysqlコマンドを実行するだけの場合、root @ localhostでソケット認証が有効になっているため、パスワードを要求されることなくアクセスが許可されます。
このガイドは誤解を招くものです。
パスワードを設定する唯一の方法は、次のようなネイティブ認証に切り替えることです。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
以下の手順でパスワードをリセットします。
$ 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をインストール
上記のすべてが私にとってはうまくいかなかったので、MYSql WebサイトからSO上のすべてのものへの他のすべての提案を1時間以上試してみましたが、ようやく動作しました:
注:ユーザーrootのEnter passwordが表示されていましたが、元のパスワードを持っていなかったため、新しいパスワードとして使用するのと同じパスワードを入力しました。
注: /var/log/mysqld.logはなく、/ var/log/mysql/error.logのみでした
/ 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成功。
全部終わった!