Как установить MySQL 8.0 с lower_case_table_names = 1 на Ubuntu Server 20.04 LTS успешно?

Похоже, что при запуске MySQL с lower_case_table_names = 1 возникает много проблем, что можно увидеть в:

Я пытаюсь установить MySQL 8.0.19 на сервере Ubuntu 20.04 LTS. lower_case_table_names = 1 нельзя установить после того, как mysql уже инициализирован, что происходит автоматически при установке из репозиториев пакетов.

Согласно документации Системные переменные сервера | sysvar_lower_case_table_names :

Для установок APT в Debian и Ubuntu, инициализирован для вас, и нет возможности настроить установка в файле опций заранее. Поэтому вы должны использовать Утилита debconf-set-selection перед установкой MySQL с использованием APT для включить lower_case_table_names . Для этого запустите эту команду до установка MySQL с помощью APT:

 sudo debconf-set-selections <<< "mysql-сервер mysql-сервер / нижний регистр-таблицы-имена включен"

Я сделал это на только что установленном Ubuntu Server 20.04 и запустил sudo apt-get install mysql-server впоследствии, но он не изменил lower_case_table_names на 1.

Если вообще, что я делаю не так? Как я могу успешно установить MySQL 8.0 с lower_case_table_names , установленным в 1?

0
задан 24 July 2020 в 10:22

1 ответ

So far, I can get it to work with a workaround: by re-initializing MySQL with the new value for lower_case_table_names after its installation. These are the requiered steps:

  1. Install MySQL:
    sudo apt-get update 
    sudo apt-get install mysql-server -y
    
  2. Stop the MySQL service:
    sudo service mysql stop
    
  3. Delete the MySQL data directory:
    sudo rm -rf /var/lib/mysql
    
  4. Recreate the MySQL data directory (yes, it is not sufficient to just delete its content):
    sudo mkdir /var/lib/mysql 
    sudo chown mysql:mysql /var/lib/mysql
    sudo chmod 700 /var/lib/mysql
    
  5. Add lower_case_table_names = 1 to the [mysqld] section in /etc/mysql/mysql.conf.d/mysqld.cnf.
  6. Re-initialize MySQL with --lower_case_table_names=1:
    sudo mysqld --defaults-file /etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
    
  7. Start the MySQL service:
    sudo service mysql start
    
  8. Retrieve the new generated password for MySQL user root:
    sudo grep 'temporary password' /var/log/mysql/error.log
    
  9. Change the password of MySQL user root either by:
    sudo mysql -u root -p
    
    and executing:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPa$$w0rd';
    
    afterwards, OR by calling the "hardening" script anyway:
    sudo mysql_secure_installation
    

After that, you can verify the lower_case_table_names setting in MySQL by executing:

SHOW VARIABLES LIKE 'lower_case_%';

Expected output:

+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
0
ответ дан 30 July 2020 в 22:04

Другие вопросы по тегам:

Похожие вопросы: