Приветствую специалистов по окружению.
Когда на сервере выполняю (одно из):
$ mysqldump -u USER -pPASSWORD DATABASE > dump.sql
$ drush sql-dump > dump.sql
$ drush sql-dump > dump.sql
пишет:
> mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
Это что значит? Файл дампа при этом создается.
Комментарии
https://dba.stackexchange.com/questions/271981/access-denied-you-need-at...
Да, я натыкался на подобные инструкции, где сказано дампить с параметром --no-tablespaces, но так и не понял что это значит. Можно кратко пояснить?
я подключился к серверу через терминал по ssh и использовал следующий запрос:
mysqldump --no-tablespaces -p --user=имя_пользователя_бд имя_бд название_таблицы > название_таблицы.sql;
у меня сработало!
С этим ключом будут пропускаться вот эти команды: https://dev.mysql.com/doc/refman/5.7/en/create-tablespace.htm и https://dev.mysql.com/doc/refman/5.7/en/create-logfile-group.html
Обычно, это можно безболезненно пропустить.
А почему при дампе БД на одном сайте это сообщение всплывает, на другом нет? На одном и том же сервере.
Посмотри какие права у одного и другого пользователя, под которыми ты делаешь дампы.
На обоих одинаково:
mysql> SHOW GRANTS FOR 'username'@'localhost';
выдает
| Grants for username@localhost |
+----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'username'@'localhost' |
| GRANT ALL PRIVILEGES ON `dbname`.* TO 'username'@'localhost' |
+----------------------------------------------------------------------------+
Тогда может быть созданы всё-же tablespace, или одна из баз создана при innodb_file_per_table, а вторая нет.
Я так понимаю, что "Access denied" можно игнорировать?
Советую добавить ключик, а не игнорировать, а то дамп может оказаться не полным.
А можно что-то сделать чтоб без ключика?
Добавить разрешение PROCESS пользователю.
А как проверить: есть ли у меня разрешения добавлять разрешения?
https://dev.mysql.com/doc/refman/8.0/en/show-grants.html
Разрешения позволяет давать: "WITH GRANT OPTION" на *.*
Очень странно, но с недавнего времени окончание --no-tablespaces пришлось добавлять еще на нескольких хостингах.
Можно ли в этом случае использовать drush для создания дампа БД. И если да то как?
У меня похожая ситуация при использовании drush arb
Можете ли подсказать, как тогда использовать drush arb, чтобы дамп бд в бэкапе был полным?
или где на хостинге менять права пользователя? у пользователя бд или пользователя аккаунта?
Либо у пользователя mysql, под которым работает Drupal добавить PROCESS.
Либо запускать drush c ключами:
--extra-dump=--no-tablespaces
или--extra=--no-tablespaces
в зависимости от версии drush.Спасибо! Я сейчас просто drush arb делаю, мне тогда к этой команде просто в конце вышеуказанный ключ или нужно отдельно дамп базы делать? Как полностью команда будет выглядеть?
Боюсь, что для drush arb не добавили нужного аргумента.
Можно не пользоваться drush для архивирования, вообще говоря. Или только дамп им снимать, чтобы не задумываться о пароле к базе, а файлы нужные паковать tar, например.
А что именно делать в вашей конкретной ситуации, зависит от задачи. Например, для резервного копирования, обычно достаточно снять дамп и сохранить /sites/, или даже sites/*/files, если используется система контроля версий для кода, и это лучше делать специализированными инструментами автоматически и регулярно.