Существуют следующие основные пакеты связанные с mysql:
Thank you for reading this post, don't forget to subscribe!
- mysql - клиент mysql
- mysql-server - сервер mysql
- mysql-devel - для разработки и подключения библиотек и хидеров mysql
- mysql-connector-java - JDBC коннектор (используется, например, в EJBCA)
Ставим:
yum install mysql mysql-server mysql-devel mysql-connector-java
Теперь надо установить сервер mysql на запуск в определенные runlevel‘ы (2, 3 и 5):
chkconfig --level 235 mysqld on
Если кто забыл соответствие цифрового значения runlevel‘а символьному:
cat /etc/inittab
поможет вспомнить.
Стартуем демон mysql:
service mysqld start
Получаем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. ... |
Настройка сервера
Теперь пора настроить сервер. Начнем с пользователей.
Вот состояние таблицы user до начала действий с ней:
mysql -u root
> use mysql
> select host,user from user;
12345678910 +-----------------------+------+| host | user |+-----------------------+------+| 127.0.0.1 | root || localhost | || localhost | root || localhost.localdomain | || localhost.localdomain | root |+-----------------------+------+5 rows in set (0.00 sec)
> quit
Как видете, безопасность на уровне плинтуса. Хорошо хоть, что анонимного пользователя нет.
Для настройки базовых вещей в сервере, запустим настройку сервера через mysql_secure_installation. На время этой установки, пароль будет security. Ваш же пароль, как понимаете, должен отличаться.
/usr/bin/mysql_secure_installation
Запустится скрипт, с запросами на то или иное действие. Вот ответы:
- Skip root password for root
Мы еще не устанавливали пароль для root, поэтому при запуске скрипта и запросе пароля дляroot
, просто нажмитеEnter
. - Set root password? [Y/n]
А вот тут можно установить пароль дляroot
- Remove anonymous users? [Y/n]
На вопрос о том, удалить ли анонимного пользователя, отвечаем да - Disallow root login remotely? [Y/n]
Не запрещаем коннект к нашему северу с удаленных серверов (если, конечно, эта опция вам нужна, в другом случае, запретите ее) - Remove test database and access to it? [Y/n]
Тестовая база нам не нужна - удаляйте ее - Reload privilege tables now? [Y/n]
Перегрузим привилегии для их активации
Теперь для всех root
пользователей установлен пароль.
Если в ходе этой конфигурации вы не установили пароль для root
, можете сделать это так:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('security');
SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD('security');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('security');
или
UPDATE mysql.user SET Password = PASSWORD('security') WHERE user = 'root';
Если же вы не запускали конфигурацию через mysql_secure_installation
или не хотите этого делать по каким-то другим причинам, следующие команды удалят any пользователей:
DROP USER ''@'localhost';
DROP USER ''@'localhost.localdomain';
Также, пароль для IPv6 localhost (@::1) можно установить таким образом:
SET PASSWORD FOR 'root'@'::1' = PASSWORD(<password>);
Близится финал нашего действия. Осталось две вещи:
- открыть порты для mysql:
iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT
- выставить кодировку UTF-8 по-умолчанию - файл
/etc/my.cnf
:[mysqld]
init_connect=‘SET collation_connection = utf8_unicode_ci’
character-set-server = utf8
collation-server = utf8_unicode_ci[client]
default-character-set = utf8
Перегружаем сервис:
service mysqld restart
Логирование медленных запросов:
nano /etc/my.cnf
log_error=/var/log/mysql/error.log
log_slow_queries=/var/log/mysql/slow.log
long_query_time = 5
log-queries-not-using-indexes