Je suis entrain de créer un site web avec Symfony5. J'en suis à la création de la base de données
J'ai via MakerBundle créé plusieurs entité. Ensuite dans le .env j'ai modifier la variable DATABASE_URL pour qu'elle corresponde à l'adresse du serveur mysql.
Jusque là tout va bien, mais quand j'ai fait mon
symfony console doctrine:database:create
ma console m'a renvoyé une grosse erreur :
In AbstractMySQLDriver.php line 106:
An exception occurred in driver: SQLSTATE[HY000] [2054] The server requested authentication method unknown to the
client
In PDOConnection.php line 31:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
In PDOConnection.php line 27:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
In PDOConnection.php line 27:
PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
Donc je n'arrive pas à créer ma base de données directement depuis la console.
Pour info : Le serveur mysql existe bien, j'y ai accès depuis DataGrip
Je suis sous Fedora 31 avec php à la version 7.3.16 (cli) et pour mysql j'ai installé community-mysql à la version 8.0.19
Ca à bien l'air d'être mon problème, mais le seul fichier 'my.cnf' que j'ai trouvé était dans le /etc et contenait de base
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
J'ai bien essayé de rajouter le fameux paramètre du plugin comme demandé dans la doc.
Mais après avoir restart mysql, aucun changement du côté de symfony
edit :
En regardant dans la table mysql.user, il y a une colonne par rapport au plugin utilisé, j'ai changé la valeur à celle donnée php.net.
Je n'ai plus l'erreur du pdo, mais j'ai une autre erreur un peu plus grave :
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
Je ne peux plus me connecter à ma base de données, donc je peux pas revenir en arrière et remettre l'ancienne valeur.
J'ai essayé de réinstaller mysql, mais ça ne change rien
Après avoir regardé mes mises à jour, il me dit que mon paquet php-cli est à jour, donc c'est que dans les dépot fedora (a priori) ils ont pas mieux. Donc je peux update php à la 7.4.4
Donc j'ai essayé de faire la commande :
mysql -u root "ALTER USER root IDENTIFIED WITH mysql_native_password BY 'rootpassword'" -p
Ca me demande mon mot de passe, je le rentre, et ça me renvoie :
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Dis-moi si je me suis trompé dans la commande, mais je ne vois pas d'autre manière de faire. Car même juste 'mysql -u root -p' me renvoie cette erreur
D'habitude pour redémarer mysql, je fais 'systemctl restart mysqld.service'. Or il ne reconnait pas cette option
Donc j'ai fait 'mysqld --skip-grant-tables' et voici ce qu'il me renvoie :
2020-04-07T14:42:42.298775Z 0 [System] [MY-010116] [Server] /usr/libexec/mysqld (mysqld 8.0.19) starting as process 19298
2020-04-07T14:42:42.299665Z 0 [ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2020-04-07T14:42:42.299704Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-04-07T14:42:42.299797Z 0 [System] [MY-010910] [Server] /usr/libexec/mysqld: Shutdown complete (mysqld 8.0.19) Source distribution.
J'ai cherché une section Security dans le manuel de mysqld, mais il n'y en a pas, même la recherche ne l'a pas trouvé. En lisant un peu plus précisemment, ça parle de lancer en root, donc je suis sorti du root, j'ai lancé la commande sans sudo :
2020-04-07T14:44:33.138695Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2020-04-07T14:44:33.138746Z 0 [System] [MY-010116] [Server] /usr/libexec/mysqld (mysqld 8.0.19) starting as process 19327
2020-04-07T14:44:33.140371Z 0 [Warning] [MY-010091] [Server] Can't create test file /var/lib/mysql/mysqld_tmp_file_case_insensitive_test.lower-test
2020-04-07T14:44:33.140378Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2020-04-07T14:44:33.140510Z 0 [ERROR] [MY-010187] [Server] Could not open file '/var/log/mysql/mysqld.log' for error logging: Permission denied
2020-04-07T14:44:33.140540Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-04-07T14:44:33.140595Z 0 [System] [MY-010910] [Server] /usr/libexec/mysqld: Shutdown complete (mysqld 8.0.19) Source distribution.
J'ai tout effacé, j'ai réinstallé comunity-mysql-server, je l'ai lancé avec 'systemctl start mysqd.service', j'ai fait 'mysql' : ET TOUT FONCTIONNE (danse de la victoire)
Merci beaucoup à MatTheCat.
Pour ce qui est du mot de passe, je le laisse à vide pour l'instant, je verrais quand je mettrais le site sur serveur en mod prod.
Quand j'ai réessayé de faire mon 'symfony console doctrine:database:create', il me renvoie cette erreur ->
In AbstractMySQLDriver.php line 106:
An exception occurred in driver: could not find driver
In PDOConnection.php line 31:
could not find driver
In PDOConnection.php line 27:
could not find driver
C'est celle que j'avais avant d'installer le mod php pour le driver pdo qui m'a conduit à l'erreur pour laquelle j'ai créé ce sujet.
J'avais installé ce mod du fait que le fichier d'où vient l'erreur s'appelle "PDOConnection.php".
Donc j'hésite à réinstaller ce driver au cas ou ça me ferait retour case départ
Afin de créer une base de donnée en symfony, il est primordial d'adapter cette ligne à votre configuration. Vous devez remplacer db_user par root, password par root pour ceux pour lesquels le mot de passe est root (pour ma part par exemple) ou sinon ne rien mettre, pour certain serveur local il n'a pas de mot de passe. Ensuite à la place de dbname, vous devez mettre le nom que vous voulez donner à votre futur base. MAIS CE N'EST PAS FINI !! Si vous vous contentez seulement de ces modifications, vous rencontrerez la même erreur ou pas ! Pour ma part, j'ai rencontré cette erreur, car je devais aussi changer le numéro de port, qui est initialement 3306, sauf pour ceux qui utilise MAMP (sur mac), le port qu'utilise MAMP pour mysql est 8889. Donc en remplaçant 3306 par 8889 cela fonctionne :).
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }
while (true) { be happy }