web-dev-qa-db-ja.com

Ubuntu18.04のlower_case_table_names = 1では、mysqlを起動できません

Mysqlコミュニティサーバー8.013をubuntu18.04にインストールしましたが、次の問題があります。データベースに大文字と小文字を区別しないテーブル名を含めるために、lower_case_table_names = 1を設定したいと思います。 /etc/mysql/mysql.conf.d/mysqld.cnfを編集し、[mysqld]の下に次の行を追加しました

lower_case_table_names=1

mysqld.cnfは次のようになりました

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
lower_case_table_names=1

を使用してmysqlサーバーを停止しました

Sudo service mysql stop

それから私はそれを使用してそれを再開しようとしました

Sudo service mysql start

しかし、私は次のエラーが発生します

Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

私は試した

systemctl status mysql.service

そして私は次の情報を得ました

christoph@christoph-Latitude-E6530:/etc/init.d$ systemctl status mysql.service
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2018-11-01 16:38:14 EET; 24s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 6681 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 6642 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 6681 (code=exited, status=1/FAILURE)
   Status: "SERVER_BOOTING"
    Error: 2 (No such file or directory)

Νοε 01 16:38:12 christoph-Latitude-E6530 systemd[1]: Starting MySQL Community Server...
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: mysql.service: Failed with result 'exit-code'.
Νοε 01 16:38:14 christoph-Latitude-E6530 systemd[1]: Failed to start MySQL Community Server.

journalctl -xeを使用して、次の情報を取得しました

-- The result is RESULT.
Νοε 01 17:32:00 christoph-Latitude-E6530 Sudo[2526]: pam_unix(Sudo:session): session closed for user root
Νοε 01 17:32:04 christoph-Latitude-E6530 wpa_supplicant[743]: wlp3s0: WPA: Group rekeying completed with 4c:5e:0c:7a:95:cf [GTK=CCMP]
Νοε 01 17:32:08 christoph-Latitude-E6530 gnome-Shell[1565]: Some code accessed the property 'discreteGpuAvailable' on the module 'appDisplay'. That property w
Νοε 01 17:32:08 christoph-Latitude-E6530 gnome-Shell[1565]: Some code accessed the property 'WindowPreviewMenuItem' on the module 'windowPreview'. That proper
lines 1349-1371/1371 (END)
Νοε 01 17:31:58 christoph-Latitude-E6530 systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Unit mysql.service has begun starting up.
Νοε 01 17:31:58 christoph-Latitude-E6530 audit[2593]: AVC apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name="/usr/sbin/mysqld" pid=2593 comm=
Νοε 01 17:31:58 christoph-Latitude-E6530 kernel: kauditd_printk_skb: 28 callbacks suppressed
Νοε 01 17:31:58 christoph-Latitude-E6530 kernel: audit: type=1400 audit(1541086318.959:39): apparmor="STATUS" operation="profile_replace" info="same as current profile, skipping" profile="unconfined" name
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: mysql.service: Failed with result 'exit-code'.
Νοε 01 17:32:00 christoph-Latitude-E6530 systemd[1]: Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- Unit mysql.service has failed.

また、を使用してサーバーを起動しようとしました

Sudo service mysql start --initialize lower_case_table_names=1

ここで説明されているように mySQL 8.0.12のlower_case_table_names設定 それでも同じエラーが発生し、mysqlがまったく起動しません

私が以下を実行した場合

Sudo vi /var/log/mysql/error.log

次のようなエラーの原因があります

Different lower_case_table_names settings for server ('1') and data dictionary ('0').
Data Dictionary initialization failed.

これが起こっている理由とそれを修正する方法はありますか?

4

MySQL 8.0およびLinuxでこれを機能させるには、次の手順に従います。

0)を使用して次の手順を実行する前に、mysqlスキーマをバックアップします

mysqldump  -h localhost -u root -p mysql > /home/username/dumps/mysqldump.sql

次に、を使用してmysqlを停止します

Sudo service mysql stop

1)/ var/lib/mysqlディレクトリを移動または削除します。これにより、すべてのデータベースが削除されます!!!!

mv /var/lib/mysql /tmp/mysql

2)新しい/ var/lib/mysqlディレクトリを作成し、mysqlユーザーを所有者にします

mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql

3)/etc/mysql/mysql.conf.d/mysqld.cnfを編集し、[mysqld]の後に次の行を追加します

lower_case_table_names=1

4)以下を使用してmysqlを初期化します

mysqld --defaults-file =/etc/mysql/my.cnf --initialize lower_case_table_names = 1 --user = mysql --console

Defaults-fileをデフォルトファイルの実際の場所に変更します。 mysqlの初期化の詳細についてはこちらをご覧ください: https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization-mysqld.html

5)(オプション)繰り返す

chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql

/ var/lib/mysql内のファイルの所有者がmysqlでない場合

6)を使用してmysqlを起動します

Sudo service mysql start

7)すべてが正しく機能した場合は、を使用してmysqlを開きます

mysql -u root -p

そして、このクエリを実行することによって

SHOW VARIABLES where Variable_name like 'lower%';

あなたは得るでしょう

'lower_case_table_names', '1'

8)ステップ0で作成したダンプを使用してmysqlスキーマを復元します。

9)mysql_upgradeを実行してsysスキーマを作成します

8

MySQLデータディレクトリを再起動する必要があります。 https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivevity.htmllower_case_table_namesによると、サーバーの初期化時にのみ構成できます。

このスクリプトを使用してそれを行うことができます https://github.com/igrmk/ubuntu-reinit-mysql

あなたのデータは破壊されることに注意してください!したがって、実行する前にバックアップを作成してください。

0
Igor Mikushkin