Ответ 1
В каталоге данных MySQL может быть проблема с правами доступа. Вы можете попробовать установить разрешения следующим образом (отрегулируйте путь к каталогу данных)
chown -R mysql:mysql /usr/local/mysql/data
Я столкнулся с проблемой создания базы данных, и это приводит к следующей ошибке.
mysql> show grants for 'admin'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]% |
+---------------------------------------------------------------------------------------------------------------------------------+
| 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)
Вот таблица моих пользователей.
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 [email protected] |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Я могу создать и удалить таблицу в существующей базе данных.
В каталоге данных уже есть привилегии mysql: mysql, а также зарегистрированный пользователь имеет право создавать новую базу данных.
Какая конфигурация отсутствует здесь?
В каталоге данных MySQL может быть проблема с правами доступа. Вы можете попробовать установить разрешения следующим образом (отрегулируйте путь к каталогу данных)
chown -R mysql:mysql /usr/local/mysql/data
Это происходит, вероятно, из-за разрешения, отклоненного MySQL. Хотя вы устанавливаете datadir=/drbd0/mysql/data
, но по умолчанию MySql set socket = /var/lib/mysql/mysql.sock
, поэтому у вас должны быть привилегии для этого каталога.
less /etc/group
а затем
less /etc/passwd
найти имя пользователя и группы mysql, по умолчанию это пользователь mysql в группе mysql.
измените на mysql dir, возможно /var/lib/mysql
, а затем введите cd ..
, чтобы перейти в один каталог.
chown -R mysql:mysql ./mysql/
Замените mysql:mysql
чем-то другим, если вы группируете и пользовательские привилегии называются differenty
Это может быть проблема с пространством. Следуйте этому
если журнал говорит что-то вроде "[ERROR] Не удается запустить сервер: невозможно создать файл PID: на устройстве не осталось места
Проверить/var размер по df -hk/var
если используется 100%, тогда вам нужно найти файлы, которые заполняются.
найти большой файл в /var find/var/-type f -size + 100000k -exec ls -lh {} \; | awk '{print $9 ":" $5} "
Посмотрите, какой файл вы можете удалить, а затем перезапустите процесс mysql
сообщите мне, если это сработало:)
Для Mac OS используйте эту команду
sudo chown -R mysql:mysql /usr/local/mysql*
Пользователь mysql
должен иметь доступ к записи в каталог данных mysql.
sudo chown -R mysql: mysql/var/lib/mysql/
В/etc/mysql/my.cnf установите datadir =/home/mysql_data, который это место, где файлы базы данных фактически находятся на вашей машине
Отключите SELinux, особенно если вы находитесь в CentOS.
Проверить Отключение или отключение SELinux.
Если вы переместите папку mysql, вы перезапустите mysql, она работает
Проверьте права доступа к файлам данных mysql.
По умолчанию каталог данных настроен в '/etc/my.conf'.
Или используйте mysqladmin -uroot -p variables | grep datadir
, чтобы найти каталог.
Он может быть /var/lib/mysql/
по умолчанию и заставляет владельца и группу владельца
это mysql. chown -R mysql:mysql /usr/local/mysql/data
Если он не был решен на шаге 1. Возможно, из-за SELinux
, попробуйте отключить его.
selinuxenabled && echo enabled || echo disabled
echo 0 > /selinux/enforce
SELINUX=disabled
и перезагрузитесь.В разных os каталог конфигурации SELinux
может быть другим.
Такая же проблема, в моем случае я изменил каталог по умолчанию на my.cf, и selinux заблокировал его.
Чтобы проверить:
setenforce 0
Исправить (CentOS)
Добавить контекст и сделать его постоянным
semanage fcontext -a -s system_u -t mysqld_db_t "/var/data/mysql(/.*)?" restorecon -Rv /var/data/mysql
источник: https://naveensnayak.wordpress.com/2016/01/14/changing-mysql-data-directory-centos-7/
Запуск WAMP, и у меня была та же проблема, выбрал традиционную остановку и начал все службы, и это сделало это для меня. После этого я смог создать базу данных, действительно не знаю, почему я не смог ее создать, поскольку у меня не было проблем с пространством или разрешением. Я надеюсь, что это поможет пользователям WAMP
В моем случае это была проблема с владельцем каталога данных MySQL, как предлагали другие. Однако установка на моем сервере была довольно редкой, с использованием разных каталогов, поэтому вот более подробное решение:
grep 'datadir' $(find/etc -iname my.cnf 2>/dev/null) | awk '{print $3}'
Если конфигурация MySQL находится в правильном месте, она возвращает, например, /var/lib/mysql
Если это не дает никакого результата, попробуйте выполнить поиск во всей файловой системе, используя
grep 'datadir' $(find / -iname my.cnf 2>/dev/null) | awk '{print $3}'
grep 'datadir' $(find / -iname my.cnf 2>/dev/null) | awk '{print $3}'
(это может занять много времени)
Сломать:
find/etc -iname my.cnf 2>/dev/null
находит файл с именем my.cnf в /etc
игнорируя ошибки
grep 'datadir'/etc/mysql/my.cnf
находит datadir в файле, найденном на предыдущем шаге
awk '{print $3}'
печатает третий столбец из стандартного ввода
sudo chown -R mysql:mysql MYSQLDIR
заменяет MYSQLDIR
путем к каталогу, возвращенному на шаге 1