Я следовал этому учебному руководству:
До сих пор я установил 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 создавать свою структуру каталогов базы данных, где он будет хранить свою информацию?
Мне удалось решить проблему с помощью вопроса, на который ранее отвечают, , Как установить 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
.
Это - все решение для Вашей проблемы.
Согласно fromdual, предложение состоит в том, чтобы просто последовать совету ошибки. Некоторая функциональность удерживается от использования.
Наш совет состоит в том, чтобы включить переменную explicit_defaults_for_timestamp теперь в Ваших системах тестирования, таким образом, Вы видите, ведет ли Ваше приложение себя хорошо, и затем Вы подготовлены к следующему выпуску, когда эта функция станет значением по умолчанию.
В короткий срок это предупреждение не опасно. В долгосрочной перспективе Вы должны быть подготовлены к функциональности устаревшей. Вы избавляетесь от предупреждения моей установки explicit_defaults_for_timestamp = 1 в Вашем my.cnf [mysqld] раздел.
Можно найти 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
обработанный... Никакая ошибка вообще!