Mysql КОМАНДЫ : ШПАРГАЛКИ В ПОМОЩЬ

Создание базы данных и пользователя и наделение их правами

CREATE DATABASE `db.example.com` CHARACTER SET utf8 COLLATE utf8_general_ci;
UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='username';
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON `db.example.com` . * TO 'username'@'localhost';
GRANT ALL PRIVILEGES ON `db.example.com` . * TO 'username'@'%';

Обновим права

flush privileges;

Как слить данных для тестировщиков — например 100 записей

mysqldump -u root -pPassword -h 192.168.0.1 --where="true limit 100" databasename > danamasename.sql
tar -xzOf your_db_dump.sql.tar.gz | mysql -u USERNAME -pPASSWORD your_database

Дать все права root

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'PASSWORD';

Как импортировать все таблицы sql в базу

for a in `ls -1 *.sql`; do mysql -u root -pПароль mysql  'имя_базы_данных' < $a; done

Выполнить Mysql запрос из bash

#!/bin/bash
mysql -u root -pSeCrEt << EOF
use mysql;
show tables;
EOF

Как сменить пароль mysql

Свой пароль можно поменять через:

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

Пароль определенного пользователя можно поменять через:

SET PASSWORD FOR логин@localhost = PASSWORD('пароль');
     SET PASSWORD FOR логин@"%" = PASSWORD('пароль');

тоже самое делают:

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

или

GRANT USAGE ON БД.* TO логин@localhost IDENTIFIED BY 'пароль';

или mysqladmin -u логин password пароль

Инструкция по сбросу пароль root  Mysql.

 

Останавливаем MySQL:
  /etc/init.d/mysql stop
Запускаем в режиме без проверки прав доступа:
 /usr/sbin/mysqld —skip-grant-tables &
Соединяемся как root без пароля:
mysql
Выбираем активную БД:
use mysql;
Обновляем пароль:
  mysql> update user set Password=PASSWORD(‘новый пароль’) WHERE User=’root’;
mysql> flush privileges;

Завершаем работу mysqld:
   fg
«Ctrl+c»

Запускаем MySQL
   /etc/init.d/mysql start

Бэкап данных с помощью percona xtrabackup

innobackupex  --defaults-file=/etc/mysql/my.cnf --user=root  --password=password  --no-timestamp  --databases "bi.etagi.com" --rsync /root/backupdb/
innobackupex --apply-log --redo-only --defaults-file=/etc/mysql/my.cnf --password=password --no-timestamp  --throttle=40 --rsync /root/backupdb/

 

Архивация данных и восстановление одной таблицы из бд

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

#!/bin/sh
 
DB=$1
TABLE=$2
PATH=/some/path/backup
 
if [ -f $PATH/$DB.sql.gz ]; then
    /bin/gunzip -c $PATH/$DB.sql.gz | /usr/bin/awk '/CREATE TABLE `'$TABLE'`/,/UNLOCK TABLES/' > /tmp/$DB.$TABLE.sql
    else
    echo 'FILE not found'
fi

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

Имя архива состоит из имени базы с расширением sql.gz

Пример выполнения скрипта

extract_table.sh database_name table_name

Из архива базы database_name извлечется таблица table_name

После этого, если необходимо, можно восстановить данную таблицу в базу.

mysql -uusername -ppassword database_name < /tmp/database_name.table_name.sql

Убить большое количество запросов в базу

Как убить большое количество запрсов в базу данных? Всё просто. Например запросы, которые длятся больше 10 секунды и с пользователем user_remote

Смотрим количество процессов(необязательно);

show processlist;

Создаем файл, с командами kill (например /tmp/kill_list.txt)

SELECT CONCAT('KILL ',ID,';') FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'user_remote' AND COMMAND = 'SELECT' AND TIME > 10 into outfile '/tmp/kill_list.txt';

Выполняем запрос из файла.

\. /tmp/kill_list.txt

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *