Percona Server замечательная замена mysql и mariadb

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&gt; 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&gt; SET GLOBAL validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)

теперь уже относительно того что я хочу в пароле, все же требования есть требования, да они для безопасности. но все же иногда не очень удобно.
для примера я сменю только одно значение

1
2
mysql&gt;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&gt; 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&gt;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;