Je viens de compiler la version MySQL 8.0.12 dans un Ubuntu 16.0.4.
Après avoir suivi les instructions du site Web et créé le fichier my.cnf suivant:
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
log_error = /var/log/mysql/error.log
# Remove case sensitive in table names
lower_case_table_names=1
J'obtiens l'erreur suivante:
2018-08-11T19:45:06.461585Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
Que dois-je changer pour que le dictionnaire de données soit aligné sur les paramètres du serveur?
Conformément à cela link , lower_case_table_names doit être défini avec l'option --initialize.
J'ai eu le même problème et comme décrit ici https://bugs.mysql.com/bug.php?id=90695 cela n'est pas pris en charge hors de la boîte. Donc, la solution de contournement que j'ai faite pour le faire fonctionner était la suivante lower_case_table_names = 1 sur Ubuntu 18.04 ne permet pas à mysql de démarrer
La documentation MySQL dit
lower_case_table_names ne peut être configuré que lors de l'initialisation du serveur. La modification du paramètre lower_case_table_names après l'initialisation du serveur est interdite.
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
Pour résoudre ce problème,
Prenez simplement la sauvegarde du schéma db existant en utilisant la commande suivante dans le dossier bin (/ usr/local/mysql/bin) ./ mysqldump -uroot -p password> dump.sql
Une fois la sauvegarde effectuée, supprimez le dossier de données existant dans Mysql Home (/ usr/local/mysql /) à l'aide de la commande rm -rf data
Ajoutez maintenant la configuration comme "lower_case_table_names = 1" dans my.cnf sous section MYSQLD (/etc/my.cnf)
Maintenant, initialisez le répertoire de données à l'aide de la commande suivante dans le répertoire bin (/ usr/local/mysql/bin)
Pour le mode sécurisé ./mysqld --defaults-file =/etc/my.cnf --initialize --user = mysql --console
Pour le mode non sécurisé ./mysqld --defaults-file =/etc/my.cnf --initialize-insecure --user = mysql --console
Une fois le répertoire de données initialisé, pour le mode non sécurisé répétez l'installation à nouveau et pour le mode sécurisé utilisez le mot de passe root qui est initialisé pendant l'exécution de l'initialisation du répertoire de données.
Maintenant, importez le fichier de vidage existant dans le serveur Mysql en utilisant la commande dans le répertoire (/ usr/local/mysql/bin)
./ mysql -uroot -p mot de passe <file.sql
Pour résoudre votre problème:
1. arrêtez mysql:
systemctl stop mysql
2. nettoyer le répertoire de données ou changer la valeur par défaut, ce qui suit est pour les nouvelles installations, si vous avez des données dans votre base de données BACK UP les au préalable
rm -rf /var/lib/mysql
3.Insérez lower_case_table_names = 1 dans votre my.cnf:
[mysqld]
lower_case_table_names=1
4. recommencez
systemctl start mysqld