Mysql syntax error mysqldump

mysqldump error 1045 – Advise from our Database Experts

Human errors can occur at any time, especially when we are in a hurry to do something.

But, sometimes it can lead to problems. One such error is mysqldump error 1045.

At Bobcares, we help server owners resolve MySQL errors as part of out Server Management Services.

Today, let’s discuss the top 4 reasons for this error and how we fix them.

mysqldump error 1045 – What’s this?

Before we move on to the reasons for this error, let’s first get an idea of this error.

Server owners often face this error when they try to use mysqldump utility for taking backup of the databases or transfer it to another server.

For instance, users see the error message like this:

This means that MySQL server disallows the user to connect it from localhost.

mysqldump error 1045 – Causes & Fixes

Now, let’s see the main reasons for this error and how our Dedicated Engineers fix them.

1) Wrong mysqldump syntax

One of the common mistakes that we see is that customers use wrong format of mysqldump command. For example, this is the general syntax for taking database backup using mysqldump.

However, we’ve seen instances where customers put extra space after -p switch and give the password. But, MySQL considers this syntax as invalid and throws this error.

How we fix?

Here, our Support Engineers check the syntax of the mysqldump command and correct the errors.

We often recommend customers not to paste the MySQL password as plain text in their commands. Instead, we suggest them to use -p switch alone, and then give the password when it prompts for.

In addition to that, some database servers won’t accept passwords with special characters such as $, &, etc. So, we reset the password and update it to the customer.

In some cases, we need to explicitly specify the hostname to which the user is connecting using the -h switch.

2) Wrong user credentials

Likewise, customers may use wrong username and password while connecting to the database. Therefore, MySQL can’t verify the authenticity of the account and throws this error.

Similarly, some customers create custom file .my.cnf and add their MySQL username and password in this file. So, they can easily use the mysql, mysqldump commands without giving the password. However, wrong information in this file can break the connection and lead to this error.

How we fix?

In such cases, our Database Experts first check whether correct username and password is used by the customer. If not, we reset the password of the database user. In addition to that, for database driven websites like WordPress, Drupal, etc. we update the new password in the website configuration files.

Moreover, if customer uses any custom .my.cnf file for the user, we update the new password there also.

3) Insufficient privileges to the database user

Another common reason for this error is that the user trying to connect to the database doesn’t have sufficient privileges. And, they receive the error as given below.

This error means that the database user ‘test-user’ doesn’t have enough privileges to run the mysqldump command on the database.

How we fix?

In such cases, our Support Experts assign proper privileges to the user to access the database. For instance, see the below command.

Читайте также:  Package discrepancy error cannot resume

This will grant all privileges to the user test-user on the selected database. Most importantly, we use the below command to save the privileges.

Similarly, on cPanel servers, we manage user privileges from cPanel > Mysql databases > Current databases > Privileged users > Click on the database user.

How to give user privileges in from cPanel?

4) Remote host not allowed in server

Similarly, users commonly see this error when they try to push and pull the databases remotely.

This is because most web hosts disallow external connections and they only allow to connect from localhost. So, server owners must allow the IP address of the server from which they are accessing the database.

How we fix?

Our Support Engineers get the remote IP address of the customer and add it to the allowed hosts list of the server, so that the IP can connect to the database remotely.

For example, on cPanel servers, we whitelist an IP address from cPanel > Databases > Remote MySQL > Add Access Host for remote connection. If the customer’s IP address changes regularly, we allow the IP address using a wildcard(%). This will add all the IP addresses in that range.

Conclusion

In short, mysqldump error 1045 can occur due to mysqldump syntax errors, insufficient privileges for the database user, and more. Today, we’ve discussed the top 4 reasons for this error and how our Dedicated Engineers fix them.

Источник

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Страниц: 1 2

#1 14.05.2008 12:01:36

mysqldump «по слогам»

Добрый день. Прошу помощи для чайника.
Существует комп под вин хр_сп3 на нём апач2.х + рнр5 + mysql5.
Подробнее о базе:
Server version: 5.0.22-community-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Назначение сервера. Опробывание различных движков форумов, порталов, игр (вов, линейка). Овладеване простыми навыками администрирования mysql, а также перенос от всех веб проектов нашей локалки на 1 выделенный серв под базу (а то куча народу что то поподымало и требуют “хостинг“.
И вот на чём я заткнулся : mysqldump. Работаю в сом строке, никаких нивикатов и прочих интерфейсов не использую и не планирую испльзовать (далее все бызы перекачуют на фрю, небольшой опыт работы с ней есть).
В инете очень много информации, но как бы я не извращася над синтаксисом, но каждый раз выдаёт, что ошибка прямо перед mysqldump.
… to your MySQL server version for the right syntax to use near ‘mysql
… at line 1’…
Не могли бы вы привести пример рабочего синтаксиса команды с опциями:
Делать полный бекап всех баз от рута.
Делать бекап конкретной базы от рута
Делать бекап конкретной базы от пользователся (у которого есть права на эту базу).
И команда что бы залочии потом зарлочить базы (для корректного бекапа).
Зарание спасибо.

#2 14.05.2008 12:07:25

Re: mysqldump «по слогам»

Делать полный бекап всех баз от рута.

mysqldump -u root -p —all_databases > имя_файла.sql

Делать бекап конкретной базы от рута.

mysqldump -u root -p имя_базы —routines > имя_файла.sql
(routines — это чтобы вместе с процедурами и функциями этой из этой базы)

Делать бекап конкретной базы от пользователся (у которого есть права на эту базу).

mysqldump -u имя_пользователя -p имя_базы —routines > имя_файла.sql

И команда что бы залочии потом зарлочить базы (для корректного бекапа).

mysqldump сам залочит READ LOCK’ом и сам разлочит. Избыточно делать не нужно.
А вообще
LOCK TABLES таблица1, таблица2;
UNLOCK TABLES; — разлочит сразу все таблицы — по-другому нельзя

#3 14.05.2008 12:12:55

Re: mysqldump «по слогам»

mysql> mysqldump -u root -p —all_databases > file.sql;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near ‘mysql
dump -u root -p —all_databases > file.sql’ at line 1
mysql>

#4 14.05.2008 12:14:33

Re: mysqldump «по слогам»

Ой, пардон.. перечитал первое сообщение и понял, что это Вы внутри консоли mysql пишете.
Вводите команды прямо в cmd (не заходя в mysql).
mysqldump — это отдельный клиент (нельзя вызвать один клиент из другого )

#5 14.05.2008 12:37:25

Re: mysqldump «по слогам»

я подозревал, что «лыжи едут нормально. » спс, ща похожу по крышам, потом буду дальше мучать.

Отредактированно Set (14.05.2008 14:58:35)

#6 17.05.2008 01:11:01

Re: mysqldump «по слогам»

простите за наивность. но подскажите как правильно запустить mysqldump из cmd, а то как то не выходит.
напимер вот путь к нему C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe

Читайте также:  Ошибка загрузки документа по причине ошибка формата потока при

#7 17.05.2008 01:27:58

Re: mysqldump «по слогам»

Например так
«C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqldump.exe» -u и.т.д.
или
C:\»Program Files»\MySQL\»MySQL Server 5.0″\bin\mysqldump.exe

#8 17.05.2008 17:03:26

Re: mysqldump «по слогам»

Чтобы не писать каждый раз длинные пути, добавьте их в переменную среды PATH:

System Propertries (вызывается нажатием Win + Break) -> Advanced -> кнопка Environment variables
там в нижнем окне выбираете Path, в начало добавляете «C:\Program Files\MySQL\MySQL Server 5.0\bin\»;

или же в autoexec.bat прописать строку
SET PATH=»C:\Program Files\MySQL\MySQL Server 5.0\bin\»;%PATH%

Если так сделаете, то сможете писать mysqldump из любого каталога без указания полных путей

#9 11.06.2008 17:20:17

Re: mysqldump «по слогам»

всё было хорошо, игрался дампами как хотел, но сегодня произошло следующее: при попытке развернуть из дампа:

база остаётся пустой
в чём дело?
____
такое происходит с любой базой (их там с десяток), выбираю бд , делаю дамп, удаляю бд, создаю бд, пытаюсь востановить из дампа: результат приведён выше.
пробовал переконфигурировать сервер. переустанавливать не стал, тк хочется разобраться с проблемой, чт бы уметь решать в будущем.

Отредактированно Set (11.06.2008 19:17:48)

Источник

Утилита mysqldump и шпаргалка по параметрам

Утилита mysqldump позволяет получить дамп содержимого базы данных или совокупности баз для создания резервной копии или пересылки данных на другой SQL-сервер (не обязательно MySQL-сервер). Дамп будет содержать набор команд SQL для создания и/или заполнения таблиц.

Так же mysqldump имеет возможность развертывания баз данных из созданного sql-файла.

Создание дампа

Разберем пример простейшее использования, задампим базу данных «database» при помощи перенаправления потока в файл «database.sql»:

  • -u или -–user=. — имя пользователя
  • -h или —host=. — удаленный хост (для локального хоста можно опустить этот параметр)
  • -p или —password — запросить пароль
  • database — имя базы данных
  • database.sql — файл для дампа

Для того чтобы сделать дамп несколько баз данных, необходимо использовать параметр —databases (или сокращенно -B), пример:

А для того чтобы сделать дамп всех баз данных, необходимо использовать параметр —all-databases (или сокращенно -A), пример:

Развертывание дампа

Перенаправляем поток в обратную сторону и развертываем базу данных:

Или через mysql-console:

Ну, а если у нас gz-архив к примеру, то:

Пример использование некоторых параметров

Например, нам нужны данные с «продакшен версии базы» для «версии разработчика», то есть нам нужна «песочница». Выбираем не более 100 записей:

Или нам нужна только структура, без данных:

Делаем дамп только триггеров, процедур и событий:

Шпаргалка по параметрам

Приведу некоторые параметры, которые могут понадобится при работе с утилитой mysqldump.

—add-drop-database
Добавляет оператор DROP DATABASE перед каждым оператором CREATE DATABASE.

—add-drop-table
Добавляет оператор DROP TABLE перед каждым оператором CREATE TABLE.

—add-locks
Добавляет оператор LOCK TABLES перед выполнением и UNLOCK TABLE после выполнения каждого дампа таблицы (для ускорения доступа к MySQL).

—all-databases, -A
Сохраняет все таблицы из всех баз данных, которые находятся под управлением текущего сервера.

—allow-keywords
Разрешить создавать имена столбцов, которые совпадают с ключевыми словами. Отсутствие конфликтов обеспечивается прибавлением имени таблицы в качестве префикса к имени каждого столбца.

—comments, -i
Данный параметр позволяет добавить в дамп дополнительную информацию, такую, как версия mysqldump, версия MySQL, имя хоста, на котором расположен сервер MySQL.

—compact
Данный параметр требует от mysqldump создать дамп, используя как можно более компактный формат. Параметр является противоположным —comments.

—compatible=name
Параметр генерирует вывод, который совместим с другими СУБД или более старыми версиями MySQL. Вместо ключевого слова name можно использовать: «ansi», «mysql323», «mysql40», «postgresql», «oracle», «mssql», «db2», «maxdb», «no_key_options», «no_table_options», «no_field_options». Можно использовать несколько значений, разделив их запятыми.

—complete-insert, -c
Используется полная форма оператора INSERT (с именами столбцов).

—create-options
Добавляет дополнительную информацию в операторы CREATE TABLE. Это может быть тип таблицы, начальное значение AUTO_INCREMENT и другие параметры.

—databases, -B
Параметр позволяет указать имена нескольких баз данных, для которых необходимо создать дамп.

—delayed
Использовать команду INSERT DELAYED при вставке строк.

—delete-master-logs
На главном сервере репликации автоматически удаляются бинарные логи (logbin) после того, как дамп был успешно создан при помощи mysqldump. Этот параметр автоматически включает параметр «—master-data».

—disable-keys, -K
Для каждой таблицы, окружает оператор INSERT выражениями /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; и /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; в выводе результата дампа. Это ускорит загрузку данных на сервер для таблиц типа MyISAM, так как индексы создаются после внесения всех данных.

Читайте также:  Error 13 invalid or unsupported executable format что это

—extended-insert, -e
Использовать команду INSERT с новым многострочным синтаксисом (повышает компактность и быстродействие операторов ввода).

—flush-logs, -F
Записать на диск данные системного журнала из буфера MySQL-сервера перед началом выполнения дампа.

—force, -f
Продолжать даже если в процессе создания дампа произошла ошибка.

—hex-blob
Параметр позволяет представить бинарные данные в полях типа BINARY, VARBINARY, BLOB и BIT в шестнадцатеричном формате. Так последовательность «abc» будет заменена на 0x616263.

—ignore-table=db_name.tbl_name
Позволяет игнорировать таблицу tbl_name базы данных db_name при создании дампа. Если из дампа необходимо исключить несколько таблиц, необходимо использовать несколько параметров «—ignore-table», указывая по одной таблице в каждом из параметров.

—insert-ignore
Добавляет ключевое слово IGNORE в оператор INSERT.

—lock-all-tables, -x
Указание этого параметра приводит к блокировке всех таблиц во всех базах данных на время создания полного дампа всех баз данных.

—lock-tables, -l
Указание этого параметра приводит к блокировке таблиц базы данных, для которой создается дамп.

—no-autocommit
Включает все операторы INSERT, относящиеся к одной таблице, в одну транзакцию, что приводит к увеличению скорости загрузки данных.

—no-create-db, -n
Подавляет создание в дампе операторов CREATE DATABASE, которые автоматически добавляются при использовании параметров —databases и —all-databases.

—no-data, -d
Подавляет создание операторов INSERT в дампе, что может быть полезно при создании дампа структуры базы данных без самих данных.

—opt
Параметр предназначен для оптимизации скорости резервирования данных и является сокращением, включающим следующие опции: —quick —add-drop-table —add-locks —create-options —disable-keys —extended-insert —lock-tables —set-charset. Начиная с MySQL 4.1, параметр —opt используется по умолчанию, т.е. все вышеперечисленные параметры включаются по умолчанию, даже если они не указываются. Для того чтобы исключить такое поведение, необходимо воспользоваться параметров —skip-opt

—order-by-primary
Указание параметра приводит к тому. что каждая таблица сортируется по первичному ключу или первому уникальному индексу.

—port, -P
Номер TCP порта, используемого для подключения к хосту.

—protocol=
Параметр позволяет задать протокол подключения к серверу.

—quick, -q
Позволяет начать формирование дампа, не дожидаясь полной загрузки данных с сервера и экономя тем самым память.

—quote-names, -Q
Помещает имена баз данных, таблиц и столбцов в обратные апострофы `. Начиная с MySQL 4.1, данный параметр включен по умолчанию.

—replace
Добавляет ключевое слово REPLACE в оператор INSERT. Данный параметр впервые появился в MySQL 5.1.3.

—result-file=/path/to/file, -r /path/to/file
Параметр направляет дамп в файл file. Этот параметр особенно удобен в Windows, без использования командной строки. когда можно перенаправить результат в файл при помощи последовательностей > и >>.

—routines, -R
Данный параметр создает дамп хранимых процедур и функций. Доступен с MySQL 5.1.2.

—single-transaction
Параметр создает дамп в виде одной транзакции.

—skip-comments
Данный параметр позволяет подавить вывод в дамп дополнительной информации.

—socket=/path/to/socket, -S /path/to/socket
Файл сокета для подсоединения к localhost.

—tab=/path/, -T /path/
При использовании этого параметра в каталоге path для каждой таблицы создаются два отдельных файла: tbl_name.sql, содержащий оператор CREATE TABLE, и tbl_name.txt, который содержит данные таблиц, разделенные символом табуляции. Формат данных может быть переопределен явно с помощью параметров —fields-xxx и —lines-xxx.

—tables
Перекрывает действия параметра —databases (-B). Все аргументы, следующие за этим параметром, трактуются как имена таблиц.

—triggers
Создается дамп триггеров. Этот параметр включен по умолчанию. для его отключения следует использовать параметр —skip-triggers.

—tz-utc
при использовании данного параметра в дамп будет добавлен оператор вида SET TIME_ZONE=’+00:00′, который позволит обмениваться дампа в различных временных зонах.

—verbose, -v
Расширенный режим вывода. Вывод более детальной информации о работе программы.

—version, -V
Вывести информацию о версии программы.

—where=’where-condition’, -w ‘where-condition’
Выполнить дамп только выбранных записей. Обратите внимание, что кавычки обязательны.

—xml, -X
Представляет дамп базы данных в виде XML.

—first-slave, -x
Блокирует все таблицы во всех базах данных.

—debug=. -#
Отслеживать прохождение программы (для отладки).

—help
Вывести справочную информацию и выйти из программы.

Еще пару слов о бекапе в MySQL

mysqlhotcopy для MyISAM

Для быстрого резервирования БД с типом таблиц ISAM и MyISAM можно использовать «mysqlhotcopy», которая скопирует файлы *.frm, *.MYD и *.MYI:

Для InnoDB не подойдет данный способ, потому что при этом типе не обязательно все файлы будут храниться в директории базы данных.

xtrabackup для InnoDB

Для InnoDB есть xtrabackup, рекомендую посмотреть!
UPD: XtraBackup — резервное копирование для innoDB

Бин-лог и репликации

Для репликации «mysqldump» не предназначена, для этого есть бин-лог (—log-bin):

Для полной репликации необходимо вести бин-лог с самого начала работы БД, то есть еще до создания структур и данных.

Резервирование данныс в MySQL 6.x

С версии MySQL 6.x доступен online-backup, вот слайд объясняющий нововведения:

Источник

Smartadm.ru
Adblock
detector