Работа с MySQL

Работа с MySQL

Шпаргалка по работе с #MySQL.

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

  • Создать пользователя DB_USER с паролем DB_PASSWORD:
1
echo "CREATE USER 'DB_USER'@'127.0.0.1' IDENTIFIED BY 'DB_PASSWORD';" | mysql --user='root' --password
  • Переименовать пользователя DB_USER@127.0.0.1 в DB_USER@localhost:
1
echo "RENAME USER 'DB_USER'@'127.0.0.1' TO 'DB_USER'@'localhost';" | mysql --user='root' --password
  • Изменить пароль пользователя DB_USER на DB_PASSWORD_NEW:
1
echo "ALTER USER 'DB_USER'@'127.0.0.1' IDENTIFIED BY 'DB_PASSWORD_NEW';" | mysql --user='root' --password
  • Удалить пользователя DB_USER:
1
echo "DROP USER 'DB_USER'@'127.0.0.1';" | mysql --user='root' --password
  • Дать права CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES и RELOAD на базу данных DB_NAME пользователю DB_USER:
1
echo "GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on DB_NAME.* TO 'DB_USER'@'127.0.0.1'; FLUSH PRIVILEGES;" | mysql --user='root' --password
  • Дать все права на базу данных DB_NAME пользователю DB_USER:
1
echo "GRANT ALL ON DB_NAME.* TO 'DB_USER'@'127.0.01'; FLUSH PRIVILEGES;" | mysql --user='root' --password
  • Дать все права на все базы данных пользователю DB_USER:
1
echo "GRANT ALL ON *.* TO 'DB_USER'@'127.0.01'; FLUSH PRIVILEGES;" | mysql --user='root' --password
  • Отозвать все права пользователя DB_USER у базы данных DB_NAME:
1
echo "REVOKE ALL ON DB_NAME FROM 'DB_USER'@'127.0.0.1';" | mysql --user='root' --password
  • Показать права пользователя DB_USER:
1
echo "SHOW GRANTS FOR 'DB_USER'@'127.0.0.1';" | mysql --user='root' --password

Базы данных

  • Создать базу данных DB_NAME с кодировкой utf8mb4 и сопоставлением utf8mb4_unicode_ci:
1
echo "CREATE DATABASE IF NOT EXISTS DB_NAME CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';" | mysql --user='root' --password
  • Изменить кодировку и сопоставление базы данных на utf8mb4 и utf8mb4_unicode_ci соответственно:
1
echo "ALTER DATABASE DB_NAME CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';" | mysql --user='root' --password
  • Удалить базу данных DB_NAME:
1
echo "DROP DATABASE IF EXISTS DB_NAME;" | mysql --user='root' --password

Резервное копирование

  • Создать резервную копию базы данных DB_NAME и записать в файл backup.sql.xz:
1
f='backup.sql'; mysqldump --user='root' --password --single-transaction --databases 'DB_NAME' --result-file="${f}" && xz "${f}" && rm -f "${f}"

Восстановление

  • Удалить старую базу данных DB_NAME:
1
echo "DROP DATABASE IF EXISTS DB_NAME;" | mysql --user='root' --password
  • Создать базу данных DB_NAME с кодировкой utf8mb4 и сопоставлением utf8mb4_unicode_ci:
1
echo "CREATE DATABASE IF NOT EXISTS DB_NAME CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" | mysql --user='root' --password
  • Дать все права на базу данных DB_NAME пользователю DB_USER:
1
echo "GRANT ALL PRIVILEGES ON DB_NAME.* TO 'DB_USER'@'127.0.01'; FLUSH PRIVILEGES;" | mysql --user='root' --password
  • Восстановить данные в новую базу данных DB_NAME из файла backup.sql.xz:
1
f='backup.sql'; xz -d "${f}.xz" && mysql --user='root' --password --database='DB_NAME' < "${f}"