Syntax highlighting of
55ca237 ~( db/mysql)
= MySQL =
<<TableOfContents()>>
== Установка ==
{{{
sudo apt install mysql-server mysql-client libmysqlclient-dev
}}}
. Для установки ruby-гема mysql достаточно установить пакет ''libmysqlclient-dev''
== Создание БД ==
{{{
mysql -u root -p
# создание нового пользователя
mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'dbpassword';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'dbuser'@'%';
# удаление пользователя
mysql> DROP USER 'demo'@'localhost';
# создание бд
mysql> CREATE DATABASE myapp DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON myapp.* TO 'dbuser'@'localhost' IDENTIFIED BY 'dbpassword';
mysql> exit
}}}
== docker ==
[[https://hub.docker.com/_/mysql/|image|class=" moin-https"]]
{{{
docker volume create mysql-vol
docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=toor \
-v mysql-vol:/var/lib/mysql \
-p 3306:3306 \
-d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker exec -it mysql mysql -u root -p
# Enter password: toor
}}}
== Backup & Restore ==
{{{
# создание резервной копии БД database_name
mysqldump database_name > database_name.sql
# создание резервной копии | mysql запущен в докере, дамп укладываем по абс пути
mysqldump -h 127.0.0.1 -u dbuser -pdbpassword moskotova > /home/zoid/tmp/moskotova.sql
# создание резервной копии | mysql запущен в докере, дамп архивируем
mysqldump -h 127.0.0.1 -u dbuser -pdbpassword moskotova | gzip > /home/zoid/tmp/moskotova.sql.gz
# создание резервной копии двух БД
mysqldump --databases database_one database_two > two_databases.sql
# создание резервной копии всех БД
mysqldump --all-databases > all_databases.sql
mysqldump --host=127.0.0.1 --user=root -p --all-databases > all_databases.sql
# создание пустой БД для восстановления
mysqladmin -u root -p create mytestdatabase
# восстановление БД
mysql database_name < database_name.sql
# восстановление одной БД из полного дампа
mysql --one-database database_name < all_databases.sql
# --- dump database
mysqldump -Q -c -e -h 127.0.0.1 -u dbuser -p moskotova | gzip > /home/zoid/tmp/moskotova.sql.gz
# --- copy dump to target db
# --- create empty database
mysqladmin -h 127.0.0.1 -udbuser -p -p create msk2
gunzip < /home/zoid/tmp/moskotova.sql.gz | mysql -h 127.0.0.1 -u dbuser -p msk2
}}}
== MySQL CLI ==
[[https://linuxize.com/post/how-to-create-mysql-user-accounts-and-grant-privileges/|How to Create MySQL Users Accounts and Grant Privileges|class=" moin-https"]]
{{{
# отобразить БД
show databases;
# создать базу данных
create database msk;
# переключение на БД
use DATABASE_NAME;
# отобразить таблицы
show tables;
# описание полей таблицы
describe TABLE_NAME
show tables;
# --- создание пользователя
CREATE USER 'dbuser'@'%' IDENTIFIED BY 'dbpassword';
GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';
# -- удаление пользователя
DROP USER 'dbuser'@'localhost';
}}}
== Troubleshooting ==
=== ActiveRecord::StatementInvalid ===
{{{
ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value: '\xD0\xA0\xD0\x95\xD0\x9
A...' for column 'title' at row 1: INSERT INTO `parent_materials` (`title`, `text`, `created_at`, `updated_at`) VALUES ('РЕКОМЕНДАЦИИ РОДИТЕЛЯМ ПО ПОДГОТОВКЕ ДЕТЕЙ К ВЫП', '<p><span s
}}}
Видимо попытка записи кириллицы в таблицу, которая не поддерживает UTF-8,
Решение
{{{
# заходим в БД
mysql -u root -p
# переключаемся на нужную БД
use DATABASE_NAME;
# конвертируем таблицу в utf-8
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8;
}}}
. Written with [[https://stackedit.io/|StackEdit|class=" moin-https"]].