J'ai du mal à créer la base de données et l'erreur suivante est générée.
mysql> show grants for 'admin'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@% |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> create database abc;
ERROR 1006 (HY000): Can't create database 'abc' (errno: 13)
Voici ma table d'utilisateurs.
mysql> select Host, user from mysql.user;
+-------------+-------+
| Host | user |
+-------------+-------+
| % | admin |
| 127.0.0.1 | root |
| ::1 | root |
| IVM-MMC-DGW | root |
| localhost | admin |
| localhost | root |
+-------------+-------+
6 rows in set (0.00 sec)
mysql> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Je peux créer et supprimer des tables dans la base de données existante.
Le répertoire de données a déjà les privilèges mysql: mysql et l'utilisateur connecté a le privilège de créer la nouvelle base de données.
Quelle configuration manque ici?
Il peut y avoir un problème d'autorisations avec le répertoire de données MySQL. Vous pouvez essayer de définir les autorisations comme suit (ajuster le chemin d'accès à votre répertoire de données)
chown -R mysql:mysql /usr/local/mysql/data
Cela est probablement dû à une autorisation refusée par MySQL. Bien que vous ayez défini le datadir=/drbd0/mysql/data
, mais par défaut MySql set socket = /var/lib/mysql/mysql.sock
, vous devriez donc avoir les privilèges sur ce répertoire.
less /etc/group
et alors
less /etc/passwd
trouver l'utilisateur mysql et le nom du groupe, par défaut, il s'agit de l'utilisateur mysql du groupe mysql.
passez à mysql dir, probablement /var/lib/mysql
, puis tapez cd ..
pour monter d’un répertoire.
chown -R mysql:mysql ./mysql/
Remplacez mysql:mysql
par quelque chose de différent si votre groupe et vos privilèges d'utilisateur sont appelés différemment.
Cela pourrait être un problème d’espace . Suivez ceci
si le journal indique quelque chose comme "" [ERREUR] Impossible de démarrer le serveur: impossible de créer le fichier PID: aucun espace disponible sur le périphérique "
Vérifier la taille/var par df -hk/var
si utilisé est 100%, alors vous devez trouver les fichiers qui sont remplis.
rechercher un fichier volumineux dans/var par rechercher/var/-type f -size + 100000k -exec ls -lh {} \; | awk '{print $ 9 ":" 5 $}'
voyez quel fichier vous pouvez supprimer puis redémarrer le processus mysql en
laissez-moi savoir si cela a fonctionné :)
Pour Mac OS, utilisez cette commande
Sudo chown -R mysql:mysql /usr/local/mysql*
L'utilisateur mysql
devrait avoir un accès en écriture au répertoire de données mysql.
Sudo chown -R mysql: mysql/var/lib/mysql /
Même problème, dans mon cas, j’ai changé le répertoire par défaut sur my.cf et le selinux l’a bloqué.
Tester:
setenforce 0
À corriger (CentOS)
Ajouter un contexte et le rendre permanent
semanage fcontext -a -s system_u -t mysqld_db_t "/var/data/mysql(/.*)?" restorecon -Rv /var/data/mysql
source: https://naveensnayak.wordpress.com/2016/01/14/changing-mysql-data-directory-centos-7/
Désactivez SELinux surtout si vous utilisez CentOS.
Vérifier Désactiver ou désactiver SELinux .
si vous déplacez le dossier mysql vous redémarrez mysql, cela fonctionne
Dans /etc/mysql/my.cnf, définissez datadir =/home/mysql_data, qui Correspond à l'emplacement où se trouvent réellement les fichiers de base de données sur votre machine.
Vérifiez les permissions de votre répertoire de données mysql.
Le répertoire de données est configuré par défaut dans '/etc/my.conf'.
Ou utilisez mysqladmin -uroot -p variables | grep datadir
pour trouver le répertoire.
Il peut s'agir de /var/lib/mysql/
par défaut, et fait en sorte que l'utilisateur propriétaire et le groupe Soit mysql. chown -R mysql:mysql /usr/local/mysql/data
Si cela n’a pas été résolu à l’étape 1. C’est peut-être à cause de SELinux
dans votre manière, essayez de éteignez-le .
selinuxenabled && echo enabled || echo disabled
echo 0 > /selinux/enforce
SELINUX=disabled
et redémarrez. Dans des systèmes d'exploitation différents, le répertoire de configuration de SELinux
peut être différent.
Courir avec WAMP et moi avons eu le même problème, opté pour le traditionnel arrêt et démarrage de tous les services et qui l'a fait pour moi. J'ai été capable de créer la base de données après cela, je ne sais vraiment pas pourquoi je n'ai pas pu la créer au début, car je n'avais aucun problème d'espace ou de permission. J'espère que cela aidera les utilisateurs de WAMP