Содержание

Mysql

Настройка безопасности после установки:

sudo mysql_secure_installation

Привилегии

Создание пользователя

GRANT [тип привилегии] ON [название БД].[название таблицы] TO '[пользователь]'@'[разрешенный хост для подключения]';

Типы привилегий:

Например, создать пользователя 'newuser' с паролем 'password' с полными правами на все базы и разрешить ему подключаться только с 'localhost':

GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Посмотреть текущие привилегии для 'user'@'localhost':

SHOW GRANTS FOR 'user'@'localhost';

Пользователи

Список пользователей

SELECT USER,host FROM mysql.user;

Удаление пользователя

DROP USER username@localhost;

Обновление пароля пользователя

Например, чтобы обновить пароль 'newpass' пользователю 'newuser' на базе mybase:

USE mybase;
UPDATE USER SET password=PASSWORD("newpass") WHERE USER='newuser';
FLUSH PRIVILEGES;

http://geeksmagazine.org/post/7/kak-sozdat-polzovatelya-i-dat-emu-prava-v-mysql

Backup

Бэкап определенной базы в консоли:

mysqldump database -u username -p | gzip -c> database.sql.gz

и обратная операция:

gunzip <database.sql.gz | mysql -u user -p database

Кодировка

Проверяем текущую:

SHOW VARIABLES LIKE 'char%';

Для установки character_set_database и character_set_server в my.cnf в [mysqld] добавляем:

character_set_server    = utf8

Игнорируем кодировку предлагаемую клиентом в my.cnf в [mysqld] добавляем:

skip-character-set-client-handshake

mysql-config-editor

Сохранить аутентификационные данные backup (пароль вводится в ручную):

docker exec -i mysql mysql_config_editor set --login-path=backup --host=localhost --user=backup --password

Показать аутентификационные данные backup:

docker exec mysql mysql_config_editor print --login-path=backup

Показать все сохоанённые аутентификационные данные:

docker exec mysql mysql_config_editor print --all

Данные хранятся в /root/.mylogin.cnf в зашифрованном виде.

https://dev.mysql.com/doc/refman/8.0/en/mysql-config-editor.html

mysqldump

mysqldump: Got error: 1044: "Access denied for user 'user'@'localhost' to database 'database'" when using LOCK TABLES

Добавляем прав пользователю:

GRANT LOCK TABLES ON DATABASE.* TO 'user'@'localhost';

не использовать с опцией –skip-opt (потеряем AUTO_INCREMENT)

Ошибки

mbind: Operation not permitted

Mysql не правильно обрабатывает отсутствующие разрешение.
Можно добавить разрешение при запуске контейнера Docker:

--cap-add sys_nice

или добавить в docker-compose.yaml:

service:
  mysql:
    image: mysql:8
    # ...
    cap_add:
      - SYS_NIC

https://github.com/docker-library/mysql/issues/422

Ссылки

Группировка - http://sqlinfo.ru/articles/info/18.html