私はこのチュートリアルに従っていました:
これまで、mysql-servermysql-client libmysqlclient-devをインストールしました、そして、MySQLにSudo mysql_install_db
を使用して情報を保存するデータベースディレクトリ構造を作成するように指示することになっていた。
$ Sudo mysql_install_db
[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR] The data directory needs to be specified.
mysqld --initialize
を実行すると問題が解決すると思いました:
$ mysqld --initialize
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
[ERROR] Aborting
MySQLに情報を保存するデータベースディレクトリ構造を作成するように指示するにはどうすればよいですか?
以前に回答した質問 buntu 16.04にmysqlをインストールする方法 を使用して問題を解決できましたが、解決策を修正する必要がありました。
/var/lib/mysql
ディレクトリを削除/移動すると、mysqld --initialize
は/var/lib/mysql
の代わりに必要なデータベースディレクトリを作成できず、Sudo
を前に付けていてもErrcode: 13 - Permission denied
を取得しました。
/var/lib/mysql/
のコンテンツを削除/移動しましたが、ディレクトリ自体は削除しませんでした。私はもう一度Sudo mysql --initialize
を実行しようとしましたが、動作し、/var/lib/mysql/
ディレクトリ内に新しいコンテンツを作成しました。 mysql --initialize
によって生成されたコンテンツは、削除または移動した以前のコンテンツとは異なります。
チュートリアルの残りの手順を続けて、完全に機能しました。
追伸Sudo -i
にアクセスするには/var/lib/mysql
を使用する必要がありました。
これが問題の完全な解決策です。
fromdual によると、提案はエラーのアドバイスに従うだけです。一部の機能は廃止されています。
テストシステムで変数explicit_defaults_for_timestampを有効にして、アプリケーションが正常に動作するかどうかを確認し、この機能がデフォルトになる次のリリースに備えてください。
短期的には、この警告は危険ではありません。長期的には、非推奨の機能に備える必要があります。 my.cnf [mysqld]セクションの警告my設定explicit_defaults_for_timestamp = 1を取り除きます。
次の場所で my.cnf
を見つける ファイルを見つけることができ、この順序で値が互いにオーバーライドします。
find / -name my.cnf
/etc/mysql/my.cnfに以下を追加しました
[mysqld]
explicit_defaults_for_timestamp = 1
今すぐ試してください
mysqld --initialize
そして、タイムスタンプを使わずにエラーを減らしました
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
2018-11-12T20:13:45.024116Z 0 [ERROR] Aborting
これはいいですか?よくわからないので、私はもっと深く見ます。上記によると エラーに対する受け入れられたスタックの答え
Sudo -i #log into root
cd /var/lib/mysql
rm -r *
su username # get back to the original user
mysqld --initialize
これにより、まったく同じエラーが発生しました。変化なし!
mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
2018-11-12T20:13:45.024116Z 0 [ERROR] Aborting
上記の回答が/var/lib/mysql
の削除に役立っているかどうかはわかりませんが、Sudo
は役立っています。
Sudo mysqld --initialize
働いた...エラーはまったくありません!