Как создать структуру каталогов базы данных для MySQL?

Я следовал этому учебному руководству:

https://www.digitalocean.com/community/tutorials/how-to-use-mysql-with-your-ruby-on-rails-application-on-ubuntu-14-04

До сих пор я установил mysql-клиент mysql-сервера libmysqlclient-dev, и я был, предполагают, чтобы сказать MySQL создавать свою структуру каталогов базы данных, где он сохранит свое информационное использование sudo mysql_install_db.

$ sudo mysql_install_db

[WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
[ERROR]   The data directory needs to be specified.

Я думал, работая mysqld --initialize решил бы проблему:

$ mysqld --initialize 

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
[ERROR] Aborting

Как я говорю MySQL создавать свою структуру каталогов базы данных, где он будет хранить свою информацию?

3
задан 5 September 2017 в 01:34

2 ответа

Мне удалось решить проблему с помощью вопроса, на который ранее отвечают, , Как установить mysql на Ubuntu 16.04 , но я должен был изменить решение работать на меня.

, Когда я удалил/переместил /var/lib/mysql, каталог, mysqld --initialize не мог создать каталог базы данных, который я хочу в замене для /var/lib/mysql, и это дало мне Errcode: 13 - Permission denied даже при том, что я предшествовал ему с sudo.

я удалил/переместил содержание /var/lib/mysql/, но не сам каталог. Я попробовал еще раз работать sudo mysql --initialize, и это работало и создало новое содержание в /var/lib/mysql/ каталог. Содержание, произведенное mysql --initialize, отличается, чем предыдущее содержание, которое я удалил/переместил.

я продолжал остальную часть шагов в учебном руководстве и работал отлично.

P.S. Я должен был использовать sudo -i для доступа /var/lib/mysql.

2
ответ дан 1 December 2019 в 16:22

Это - все решение для Вашей проблемы.

Согласно fromdual, предложение состоит в том, чтобы просто последовать совету ошибки. Некоторая функциональность удерживается от использования.

Наш совет состоит в том, чтобы включить переменную explicit_defaults_for_timestamp теперь в Ваших системах тестирования, таким образом, Вы видите, ведет ли Ваше приложение себя хорошо, и затем Вы подготовлены к следующему выпуску, когда эта функция станет значением по умолчанию.

В короткий срок это предупреждение не опасно. В долгосрочной перспективе Вы должны быть подготовлены к функциональности устаревшей. Вы избавляетесь от предупреждения моей установки explicit_defaults_for_timestamp = 1 в Вашем my.cnf [mysqld] раздел.

Можно найти my.cnf файл в следующих местоположениях, и в этом порядке значения переопределяет друг друга:

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • $MYSQL_HOME/my.cnf
  • [datadir]/my.cnf
  • ~/.my.cnf

Можно также найти файл

find / -name my.cnf

Я добавил следующее в/etc/mysql/my.cnf

[mysqld]
explicit_defaults_for_timestamp = 1

Теперь попробуйте

mysqld --initialize

И я получил уменьшенную ошибку без материала Метки времени

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
2018-11-12T20:13:45.024116Z 0 [ERROR] Aborting

Действительно ли это хорошо? Не уверенный, таким образом, я выгляжу глубже. Согласно ответу стека aboveaccepted для ошибки Вы должны

sudo -i #log into root
cd /var/lib/mysql
rm -r *

su username  # get back to the original user

mysqld --initialize 

Это, все еще дал мне ту же самую ошибку. Никакое изменение!

mysqld: Can't create directory '/var/lib/mysql/' (Errcode: 17 - File exists)
2018-11-12T20:13:45.024116Z 0 [ERROR] Aborting

Я не уверен, что вышеупомянутый принятый ответ помог вообще с удалением /var/lib/mysql, но sudo помогший:

sudo mysqld --initialize

обработанный... Никакая ошибка вообще!

1
ответ дан 1 December 2019 в 16:22

Другие вопросы по тегам:

Похожие вопросы: