Percona server — это сборка MySQL (от Петра Зайцева и ко) с включенным по умолчанию XtraDB storage engine. Отличается от MySQL+InnoDB plugin лучшей производительностью/масштабируемостью, особенно на современных многоядерных серверах. Также улучшена функциональность — больше всякой полезной для оптимизации статистики и пр. Собирается в вариантах базирующихся на MySQL 5.0 и 5.1. Полностью совместим с таблицами innodb, то есть можно переходить от innodb к xtradb и обратно без проблем (если не использовать некоторые специфичные для xtradb функции, типа меньшего размера страницы).
Установка на Centos 7
1 | yum install href="http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm |
1 | yum install Percona-Server-server-57 |
на этом установка завершена
далее настройка
1 | service mysql start |
При старте демона в логах создаеться пароль от [email protected]
1 2 | [[email protected] log]# cat mysqld.log | grep generated 2017-10-02T08:39:51.848675Z 1 [Note] A temporary password is generated for [email protected]: 1e-gn,d9.sfA |
меняем пароль и настраиваем через команду
1 | mysql_secure_installation |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | [[email protected] log]# mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: The existing password for the user account root has expired. Please set a new password. New password: Re-enter new password: The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : <strong>No</strong> ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : <strong>y</strong> Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <strong>y</strong> Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <strong>y</strong> - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <strong>y</strong> Success. All done! |
Теперь немного о password policy
При создании пользователя, для него нужно будет придумывать сложный пароль, но все же требования к паролю можно уменьшить.
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | MEDIUM | | validate_password_special_char_count | 1 | +--------------------------------------+--------+ 7 rows in set (0.01 sec) |
Для начала я уменьшу значение
1 | validate_password_policy |
1 2 | mysql> SET GLOBAL validate_password_policy=LOW; Query OK, 0 rows affected (0.00 sec) |
теперь уже относительно того что я хочу в пароле, все же требования есть требования, да они для безопасности. но все же иногда не очень удобно.
для примера я сменю только одно значение
1 2 | mysql>SET GLOBAL validate_password_special_char_count=0; Query OK, 0 rows affected (0.00 sec) |
после всех изменений правил политики проверяю:
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_password_length | 8 | | validate_password_mixed_case_count | 1 | | validate_password_number_count | 1 | | validate_password_policy | LOW | | validate_password_special_char_count | 0 | +--------------------------------------+-------+ 7 rows in set (0.01 sec) |
мне этого достаточно.
Управление пользователями и базами
Создание пользователя
1 | CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; |
Удаление пользователя
1 | DROP USER ‘user’@‘localhost’; |
Список пользователей
1 | SELECT User,Host FROM mysql.user; |
Список прав у пользователя [email protected]
1 | SHOW GRANTS FOR [email protected]; |
Добавим выбранные привилегии для всех таблиц БД basename пользователю ‘user’@’localhost’
1 | GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON basename.* TO 'user'@'localhost'; |
Добавим все привилегии для всех таблиц БД basename пользователю ‘user’@’localhost’
1 | GRANT ALL PRIVILEGES ON basename.* TO 'user'@'localhost'; |
Удаление прав пользователя ‘user’@’localhost’ для БД basename:
REVOKE ALL ON basename.* FROM ‘user’@’localhost’;
Перезагрузка привилегий
1 | FLUSH PRIVILEGES; |
Смена пароля пользователя
1 2 3 | USE mysql; UPDATE user SET password=PASSWORD("НОВЫЙ_ПАРОЛЬ") where User='user'; FLUSH PRIVILEGES; |
Управление базой данных
Создание базы данных
1 | mysql>CREATE DATABASE basename COLLATE utf8_general_ci; |
Создание базы с консоли сервера
1 | mysqladmin -u root -p create basename |
Удаления базы данных из консоли сервера
1 | mysqladmin -u root -p drop basename |
Удаление базы с консоли mysql
1 | DROP DATABASE basename; |