MySQL
Contents[+]
Установка
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
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
How to Create MySQL Users Accounts and Grant Privileges
# отобразить БД 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;