私のubuntu 16.04サーバーでは、次のコマンドでmysqlをインストールしようとしています
Sudo apt-get install mysql-server
メッセージが出るたびに:
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Renaming removed key_buffer and myisam-recover options (if present)
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.16, use --force if you still need to run mysql_upgrade
私は押す必要があります Ctrl+z それを止めるために。 /var/log/mysql/error.log
のログファイルを確認しましたが、最後の10行にこの結果が示されています。
2017-01-18T09:07:30.329930Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170118 9:07:30
2017-01-18T09:07:30.335086Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2017-01-18T09:07:30.335137Z 0 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
2017-01-18T09:07:30.335157Z 0 [Note] - '127.0.0.1' resolves to '127.0.0.1';
2017-01-18T09:07:30.335216Z 0 [Note] Server socket created on IP: '127.0.0.1'.
2017-01-18T09:07:30.349491Z 0 [Note] Event Scheduler: Loaded 1 event
2017-01-18T09:07:30.349749Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' started.
2017-01-18T09:07:30.350543Z 1 [ERROR] 1396 Operation ALTER USER failed for 'root'@'localhost'
2017-01-18T09:07:30.350737Z 0 [Note] Execution of init_file '/var/lib/mysql-files/tmp.sJ5rMac6mK' ended.
2017-01-18T09:07:30.350864Z 0 [Note] mysqld: ready for connections.
再起動後、mysql -u root
でmysqlにログインしました。 mysql内では、新しいユーザーを作成したり、特権を変更したりすることは一切できません。デフォルトのデータベースを参照するだけです
show grants
と入力すると、次の結果が表示されます
+--------------------------------------+
| Grants for @localhost |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+
これはかなり奇妙です。これを確認するために、user_privileges
のinformation_schema
テーブルを確認しました。
+----------------+---------------+----------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+----------------+---------------+----------------+--------------+
| ''@'localhost' | def | USAGE | NO |
+----------------+---------------+----------------+--------------+
ルートアクセスを有効にして作成、更新するにはどうすればよいですか?
簡単な解決策は、apt-get操作の実行中にSudo killall mysqld
することです。
Apt操作は、その後エラーなしで実行され続けました(!)
ソース: https://bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1596815
やっと回避策が得られました。これが私がしたことです
Sudo apt purge mysql*
を使用してmysqlをアンインストールします/etc/mysql
フォルダーを削除/var/lib/mysql, /var/lib/mysql-files, /var/lib/mysql-kering
フォルダーを削除します。Sudo apt-get install mysql-server
を使用してmysqlをインストールします今回は、mysqlはスタックすることなく正常にインストールされました。インストール中に、rootパスワードの入力を求められ、パスワードを提供しました。インストール後、指定されたパスワードでrootでログインしました。今回は新しいユーザーを作成し、すべてを更新するとうまくいきます。さて、ここにshow grants
の結果があります:
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
なぜ最初はうまくいかなかったのかはまだわかりませんが。 cnfファイルのみを削除してみましたが、うまくいきませんでした。 /var/lib
内のすべてのmysqlフォルダーを削除すると、機能しました。そのため、/var/lib/msyql
ディレクトリ内に新しいユーザー(rootユーザーも含む)を作成できないファイルがあったと思います。
Mysql_server構成の問題を解決するために何ヶ月も探していましたが、これは他のものをインストールするとフリーズするため、プロセスを強制終了し、mysqlを手動で起動する必要があります。また、これにより、コンピューターを再起動するたびにMySQLを手動で起動する必要がありました。
/var/lib/dpkg/info/mysql-server-5.7.postinstを編集しましたが、configure)部分が何も返さないため、フリーズするだけです。
そのファイルを編集し、configureの最後に)セクション(abort-upgrade | abort-remove | abort-configureのセクションの前)を追加する必要があります。このような:
# To avoid downgrades. This has to happen after the database is created, or --initialize will fail
touch $mysql_statedir/debian-5.7.flag
exit 0 # Corregimos el bug del postinst de mysql
;;
abort-upgrade|abort-remove|abort-configure)