Как поменять пароль пользователя в WordPress через базу данных MySQL

Может возникнуть такая ситуация, что вы вдруг забыли пароль от своей учетной записи на сайте запущенным под CMS WordPress, или что еще хуже — вас взломали, и поменяли пароль. Почтовый сервер не отправляет письмо с ссылкой на востановление, а если отправляет, то не вам… Но, если у вас есть доступ к серверу MySQL, где находится используемая база данных сайтом с WordPress, то это не будет проблемой.

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

Смена пароля через MySQL

И так, приступим:

  1. Сперва нужно запустить консольный клиент MySQL. Делается это простой командой mysql:
    mysql -p -u имя_пользователя

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

  2. Теперь нужно выбрать нужную базу данных. Предположим, она называется wordpress:
    use wordpress;

    При успешном выполнении команды будет выведено сообщение Database changed.
    Если вы НЕ ЗНАЕТЕ, имя базы, то у вас доступны следующие способы прояснить ситуацию:

    • Посмотреть список баз данных на MySQL сервере, выполним следующую команду:
      show databases;
    • Посмотреть имя базы данных в файле конфига WordPress, который называется wp_config.php и лежит в корневой директории сайта на WordPress:
      cat wp-config.php | grep DB_NAME
  3. Осталось разобраться какому пользователю нужно поменять пароль. Для этого достаточно просто знать адрес электронной почты, или логин. Выполняем в MySQL команду:
    • Для смены пароля пользователя с логином Sysadmin:
      UPDATE `wp_users` SET `user_pass` = MD5('12345678') WHERE `wp_users`.`user_login` = Sysadmin;
    • Для смены пароля пользователю с адресом электронной почты sysadmin@sysadmin.ru:
      UPDATE `wp_users` SET `user_pass` = MD5('12345678') WHERE `wp_users`.`user_email` = sysadmin@sysadmin.ru;

    Как только появится примерно следующее сообщение:

    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    То значит пароль пользователя был изменен.

Перенос сайта на WordPress на новый домен

UPDATE wp_options SET option_value = replace(option_value, ‘old’, ‘new’) WHERE option_name = ‘home’ OR option_name = ‘siteurl’;

UPDATE wp_posts SET guid = replace(guid, ‘old’,’new’);

UPDATE wp_posts SET post_content = replace(post_content, ‘old’, ‘new’);

Изменить пароль пользователя MySQL

Небольшая заметка на тему как изменить пароль пользователя MySQL. Мне не часто приходится менять пароли, но решил добавить эту заметку связи с тем, что даже для такой простого действия MySQL есть несколько решений. Для начала из под консоли сервера выполните команду:

mysql -uroot -p

Чтобы изменить свой пароль, а точнее пароль пользователя под которым выполнена авторизация, в консоли MySQL нужно просто выполнить команду:

SET PASSWORD = PASSWORD('пароль')

Когда необходимо изменить пароль для другого пользователя MySQL, нужно использовать команду:

SET PASSWORD FOR 'mysqluser'@'localhost' = PASSWORD('пароль');
SET PASSWORD FOR 'mysqluser'@'%' = PASSWORD('пароль');

Первая команда отличается от второй тем, что пользователю mysqluser будет разрешена авторизация только с localhost. В плане безопасности это более предпочтительный вариант.

Аналогичное действие можно выполнить с помощью запроса SQL:

UPDATE mysql.user SET Password=PASSWORD('пароль') WHERE User='mysqluser' AND Host='localhost';
FLUSH PRIVILEGES;

MySQL: Предоставление привилегий **all** для базы данных

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER ‘myuser’@’%’ IDENTIFIED BY PASSWORD ‘*HASH’;
GRANT ALL PRIVILEGES ON mydb.* TO ‘myuser’@’%’ WITH GRANT OPTION;

Как создать базу данных для wordpress через команды MySQL?

mysql -u root -p
CREATE DATABASE wpdata;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'MyStrongPassword';
GRANT ALL PRIVILEGES ON wpdata.* TO wpuser@localhost;
FLUSH PRIVILEGES;

Экспорт и импорт всех баз данных MySQL одновременно

Экспорт:

mysqldump -u root -p --all-databases > alldb.sql

Посмотрите документацию для mysqldump . Возможно, вы захотите использовать некоторые из вариантов, упомянутых в комментариях:

mysqldump -u root -p --opt --all-databases > alldb.sql
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql

Импорт:

mysql -u root -p < alldb.sql

Как сбросить пароль администратора WordPress через командную строку MySQL

Прежде чем войти в службу базы данных MySQL / MariaDB , сначала создайте хеш нового пароля, которая будет назначена учетной записи, с помощью следующей команды.

Замените строку «newpass», используемую в этом примере, с вашим собственным надежным паролем. Скопируйте хеш пароля MD5 в файл, чтобы позже вставить хеш в поле пароля пользователя MySQL.

# echo -n «newpass» | md5sum

После того, как вы создали новый хеш-пароль MD5, войдите в базу данных MySQL с правами root и выполните команду ниже, чтобы идентифицировать и выбрать базу данных WordPress. В этом случае база данных WordPress называется «wordpress».

# mysql -u root -p MariaDB [(none)]> show databases; MariaDB [(none)]> use wordpress;

Затем выполните следующую команду, чтобы определить таблицу, отвечающую за хранение учетных записей пользователей WordPress. Обычно таблица, в которой хранится вся информация пользователя, является wp_users . Запрос таблицы wp_users получает ID всех пользователей, логин и пароль и идентифицирует поле ID логина учетной записи, которая нуждается в изменении пароля. ID имени пользователя будет использоваться для дальнейшего обновления пароля.

MariaDB [(none)]> show tables; MariaDB [(none)]> SELECT ID, user_login, user_pass FROM wp_users;

После того, как вы правильно определили ID пользователя, которому требуется пароль, измените его, чтобы обновить его пароль. Замените ID пользователя и хеш MD5 пароля соответственно. В этом случае идентификатор пользователя равен 1, а новый хеш пароля: e6053eb8d35e02ae40beeeacef203c1a.

MariaDB [(none)]> UPDATE wp_users SET user_pass= «e6053eb8d35e02ae40beeeacef203c1a» WHERE ID = 1;

Как сделать резервную копию и восстановить базу данных MySQL с помощью Mysqldump

Файлы резервных копий, созданные утилитой mysqldump, представляют собой набор операторов SQL, которые можно использовать для воссоздания исходной базы данных. Команда mysqldump также может генерировать файлы в формате CSV и XML. Вы также можете использовать утилиту mysqldump для переноса вашей базы данных MySQL на другой сервер MySQL.

Синтаксис команды Mysqldump

Прежде чем приступить к использованию команды mysqldump, начнем с обзора основного синтаксиса.

Выражения утилиты mysqldump имеют следующую форму:

mysqldump [options] > file.sql
  • options — параметры mysqldump
  • file.sql — дамп (резервная копия) файла

Для использования команды mysqldump сервер MySQL должен быть доступен и запущен.


Резервное копирование одной базы данных MySQL

Наиболее распространенный вариант использования инструмента mysqldump — резервное копирование одной базы данных.

Например, чтобы создать резервную копию базы данных с именем database_name, используя пользователя root, и сохранить ее в файл с именем database_name.sql, вы должны выполнить следующую команду:

mysqldump -u root -p database_name > database_name.sql

Вам будет предложено ввести пароль root. После успешной аутентификации начнется процесс дампа. В зависимости от размера базы данных процесс может занять некоторое время.

Если вы вошли в систему как тот же пользователь, которого вы используете для выполнения экспорта, и этот пользователь не требует пароля, вы можете пропустить опции -u и -p:

mysqldump database_name > database_name.sql

Резервное копирование нескольких баз данных MySQL

ля резервного копирования нескольких баз данных MySQL одной командой вам нужно использовать параметр --database, за которым следует список баз данных, которые вы хотите сделать резервную копию. Каждое имя базы данных должно быть разделено пробелом.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

Команда выше создаст файл дампа, содержащий обе базы данных.


Резервное копирование всех баз данных MySQL

Используйте опцию --all-database для резервного копирования всех баз данных MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

Как и в предыдущем примере, команда выше создаст один файл дампа, содержащий все базы данных.


Резервное копирование всех баз данных MySQL в отдельные файлы

Утилита mysqldump не предоставляет возможность резервного копирования всех баз данных в отдельные файлы, но мы легко достигаем этого с помощью простого цикла bash FOR:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done

Команда выше создаст отдельный файл дампа для каждой базы данных, используя имя базы данных в качестве имени файла.


Создание сжатой резервной копии базы данных MySQL

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

mysqldump database_name | gzip > database_name.sql.gz

Создать резервную копию с отметкой времени

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

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

Команда выше создаст файл в следующем формате database_name-20200223.sql


Восстановление дампа MySQL

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

mysqld  database_name < file.sql

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

В следующем примере первая команда создаст базу данных с именем database_name, а затем импортирует в нее дамп database_name.sql:

mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

Восстановление одной базы данных MySQL из полного дампа MySQL

Если вы создали резервную копию всех своих баз данных с помощью параметра -all-database и хотите восстановить одну базу данных из файла резервной копии, который содержит несколько баз данных, используйте параметр --one-database, как показано ниже:

mysql --one-database database_name < all_databases.sql

Экспорт и импорт базы данных MySQL одной командой

Вместо того, чтобы создавать файл дампа из одной базы данных и затем импортировать резервную копию в другую базу данных MySQL, вы можете использовать следующую однострочную команду:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Команда выше передаст вывод клиенту mysql на удаленном хосте и импортирует его в базу данных с именем remote_database_name. Перед выполнением команды убедитесь, что база данных уже существует на удаленном сервере.


Автоматизация резервного копирования с помощью Cron

Автоматизация процесса резервного копирования баз данных так же проста, как создание задания cron, которое будет запускать команду mysqldump в указанное время. Подробно про cron можно прочитать в нашей статье.

Чтобы настроить автоматическое резервное копирование базы данных MySQL с помощью cronjob, выполните следующие действия:

  1. Создайте файл с именем .my.cnf в вашем домашнем каталоге пользователя: sudo nano ~/.my.cnf Скопируйте и вставьте следующий текст в файл .my.cnf. [client] user = dbuser password = dbpasswd Не забудьте заменить dbuser и dbpasswd на пользователя базы данных и пароль пользователя.
  2. Ограничьте права доступа к файлу учетных данных, чтобы только ваш пользователь имел к нему доступ, используя команду cmod (подробнее про которую можно прочесть тут): chmod 600 ~/.my.cnf
  3. Создайте каталог для хранения резервных копий при помощи комадны mkdir (про нее тоже есть статья): mkdir ~/db_backups
  4. Откройте ваш пользовательский файл crontab: crontab -e Добавьте следующее задание cron, которое будет создавать резервную копию имени базы данных mydb каждый день в 3 часа ночи: 0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql Не забудьте заменить username вашим реальным именем пользователя. Вы также можете создать еще один cron job, чтобы удалить любые резервные копии старше 30 дней: find /path/to/backups -type f -name «*.sql» -mtime +30 -delete Конечно, вам нужно настроить команду в соответствии с вашим местоположением резервной копии и именами файлов. Чтобы узнать больше о команде find, ознакомьтесь с нашим Руководством по поиску файлов в Linux с помощью командной строки.

Синтаксис команды Mysqldump

Прежде чем приступить к использованию команды mysqldump, начнем с обзора основного синтаксиса.

Выражения утилиты mysqldump имеют следующую форму:

mysqldump [options] > file.sql
  • options — параметры mysqldump
  • file.sql — дамп (резервная копия) файла

Для использования команды mysqldump сервер MySQL должен быть доступен и запущен.


Резервное копирование одной базы данных MySQL

Наиболее распространенный вариант использования инструмента mysqldump — резервное копирование одной базы данных.

Например, чтобы создать резервную копию базы данных с именем database_name, используя пользователя root, и сохранить ее в файл с именем database_name.sql, вы должны выполнить следующую команду:

mysqldump -u root -p database_name > database_name.sql

Вам будет предложено ввести пароль root. После успешной аутентификации начнется процесс дампа. В зависимости от размера базы данных процесс может занять некоторое время.

Если вы вошли в систему как тот же пользователь, которого вы используете для выполнения экспорта, и этот пользователь не требует пароля, вы можете пропустить опции -u и -p:

mysqldump database_name > database_name.sql

Резервное копирование нескольких баз данных MySQL

ля резервного копирования нескольких баз данных MySQL одной командой вам нужно использовать параметр --database, за которым следует список баз данных, которые вы хотите сделать резервную копию. Каждое имя базы данных должно быть разделено пробелом.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

Команда выше создаст файл дампа, содержащий обе базы данных.


Резервное копирование всех баз данных MySQL

Используйте опцию --all-database для резервного копирования всех баз данных MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

Как и в предыдущем примере, команда выше создаст один файл дампа, содержащий все базы данных.


Резервное копирование всех баз данных MySQL в отдельные файлы

Утилита mysqldump не предоставляет возможность резервного копирования всех баз данных в отдельные файлы, но мы легко достигаем этого с помощью простого цикла bash FOR:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done

Команда выше создаст отдельный файл дампа для каждой базы данных, используя имя базы данных в качестве имени файла.


Создание сжатой резервной копии базы данных MySQL

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

mysqldump database_name | gzip > database_name.sql.gz

Создать резервную копию с отметкой времени

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

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

Команда выше создаст файл в следующем формате database_name-20200223.sql


Восстановление дампа MySQL

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

mysqld  database_name < file.sql

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

В следующем примере первая команда создаст базу данных с именем database_name, а затем импортирует в нее дамп database_name.sql:

mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

Восстановление одной базы данных MySQL из полного дампа MySQL

Если вы создали резервную копию всех своих баз данных с помощью параметра -all-database и хотите восстановить одну базу данных из файла резервной копии, который содержит несколько баз данных, используйте параметр --one-database, как показано ниже:

mysql --one-database database_name < all_databases.sql

Экспорт и импорт базы данных MySQL одной командой

Вместо того, чтобы создавать файл дампа из одной базы данных и затем импортировать резервную копию в другую базу данных MySQL, вы можете использовать следующую однострочную команду:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Команда выше передаст вывод клиенту mysql на удаленном хосте и импортирует его в базу данных с именем remote_database_name. Перед выполнением команды убедитесь, что база данных уже существует на удаленном сервере.


Автоматизация резервного копирования с помощью Cron

Автоматизация процесса резервного копирования баз данных так же проста, как создание задания cron, которое будет запускать команду mysqldump в указанное время. Подробно про cron можно прочитать в нашей статье.

Чтобы настроить автоматическое резервное копирование базы данных MySQL с помощью cronjob, выполните следующие действия:

  1. Создайте файл с именем .my.cnf в вашем домашнем каталоге пользователя: sudo nano ~/.my.cnf Скопируйте и вставьте следующий текст в файл .my.cnf. [client] user = dbuser password = dbpasswd Не забудьте заменить dbuser и dbpasswd на пользователя базы данных и пароль пользователя.
  2. Ограничьте права доступа к файлу учетных данных, чтобы только ваш пользователь имел к нему доступ, используя команду cmod (подробнее про которую можно прочесть тут): chmod 600 ~/.my.cnf
  3. Создайте каталог для хранения резервных копий при помощи комадны mkdir (про нее тоже есть статья): mkdir ~/db_backups
  4. Откройте ваш пользовательский файл crontab: crontab -e Добавьте следующее задание cron, которое будет создавать резервную копию имени базы данных mydb каждый день в 3 часа ночи: 0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql Не забудьте заменить username вашим реальным именем пользователя. Вы также можете создать еще один cron job, чтобы удалить любые резервные копии старше 30 дней: find /path/to/backups -type f -name «*.sql» -mtime +30 -delete Конечно, вам нужно настроить команду в соответствии с вашим местоположением резервной копии и именами файлов. Чтобы узнать больше о команде find, ознакомьтесь с нашим Руководством по поиску файлов в Linux с помощью командной строки.

Как посмотреть версию MySQL на сервере

Способ 1

  1. Подключаетесь по SSH через консоль;
  2. Вводите команду:
mysql --version

В результате вы получите вывод примерно следующего текста:

mysql  Ver 14.14 Distrib 5.1.66, for pc-linux-gnu (x86_64) using readline 5.1

Способ 2

Версия MySQL отображается сразу после входа в MySQL через консоль. Например:

  1. Подключаетесь к MySQL: mysql –u root –p
  2. Вводите свой пароль.

Если авторизация прошла успешно, то в консоли отобразится приблизительно такое уведомление:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.1.66 Source distribution

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Если же необходима более подробная информация о состоянии MySQL, то для её вывода необходимо войти в MySQL и выполнить следующую команду:

SHOW VARIABLES;

Удаление всех товаров в WooCommerce c помощью SQL-запроса

DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type = 'product');
DELETE FROM wp_posts WHERE post_type = 'product';