Подтвердить что ты не робот

ERROR 1006 (HY000) Невозможно создать базу данных (errno: 13) MySQL 5.6.12

Я столкнулся с проблемой создания базы данных, и это приводит к следующей ошибке.

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, а также зарегистрированный пользователь имеет право создавать новую базу данных.

Какая конфигурация отсутствует здесь?

4b9b3361

Ответ 1

В каталоге данных MySQL может быть проблема с правами доступа. Вы можете попробовать установить разрешения следующим образом (отрегулируйте путь к каталогу данных)

chown -R mysql:mysql /usr/local/mysql/data

Ответ 2

Это происходит, вероятно, из-за разрешения, отклоненного 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

Ответ 3

Это может быть проблема с пространством. Следуйте этому

  • Проверить .err журналы в /var/lib/mysql
  • если журнал говорит что-то вроде "[ERROR] Не удается запустить сервер: невозможно создать файл PID: на устройстве не осталось места

  • Проверить/var размер по df -hk/var

  • если используется 100%, тогда вам нужно найти файлы, которые заполняются.

  • найти большой файл в /var find/var/-type f -size + 100000k -exec ls -lh {} \; | awk '{print $9 ":" $5} "

  • Посмотрите, какой файл вы можете удалить, а затем перезапустите процесс mysql

  • /etc/init.d/mysql restart

сообщите мне, если это сработало:)

Ответ 4

Для Mac OS используйте эту команду

sudo chown -R mysql:mysql /usr/local/mysql*

Пользователь mysql должен иметь доступ к записи в каталог данных mysql.

Ответ 5

sudo chown -R mysql: mysql/var/lib/mysql/

Ответ 6

В/etc/mysql/my.cnf установите datadir =/home/mysql_data, который это место, где файлы базы данных фактически находятся на вашей машине

Ответ 8

Если вы переместите папку mysql, вы перезапустите mysql, она работает

Ответ 9

  • Проверьте права доступа к файлам данных mysql.
    По умолчанию каталог данных настроен в '/etc/my.conf'.
    Или используйте mysqladmin -uroot -p variables | grep datadir, чтобы найти каталог.
    Он может быть /var/lib/mysql/ по умолчанию и заставляет владельца и группу владельца это mysql. chown -R mysql:mysql /usr/local/mysql/data

  • Если он не был решен на шаге 1. Возможно, из-за SELinux, попробуйте отключить его.

    • Проверьте, работает ли SELinux. selinuxenabled && echo enabled || echo disabled
    • Временное отключение SELinux. echo 0 > /selinux/enforce
    • Полностью отключает SELinux. Измените конфигурацию SELINUX=disabled и перезагрузитесь.

    В разных os каталог конфигурации SELinux может быть другим.

Ответ 10

Такая же проблема, в моем случае я изменил каталог по умолчанию на 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/

Ответ 11

Запуск WAMP, и у меня была та же проблема, выбрал традиционную остановку и начал все службы, и это сделало это для меня. После этого я смог создать базу данных, действительно не знаю, почему я не смог ее создать, поскольку у меня не было проблем с пространством или разрешением. Я надеюсь, что это поможет пользователям WAMP

Ответ 12

В моем случае это была проблема с владельцем каталога данных MySQL, как предлагали другие. Однако установка на моем сервере была довольно редкой, с использованием разных каталогов, поэтому вот более подробное решение:

  1. Найти каталог данных 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}' печатает третий столбец из стандартного ввода

  1. Исправить владение

sudo chown -R mysql:mysql MYSQLDIR заменяет MYSQLDIR путем к каталогу, возвращенному на шаге 1