MYSQL установка

Суще­ству­ют сле­ду­ю­щие основ­ные паке­ты свя­зан­ные с 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

Полу­ча­ем:

 

Настройка сервера

Теперь пора настро­ить сер­вер. Нач­нем с пользователей.

Вот состо­я­ние таб­ли­цы user до нача­ла дей­ствий с ней:

mysql -u root
> use mysql
> select host,user from user;

5 rows in set (0.00 sec)
> quit

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

Для настрой­ки базо­вых вещей в сер­ве­ре, запу­стим настрой­ку сер­ве­ра через mysql_secure_installation. На вре­мя этой уста­нов­ки, пароль будет security. Ваш же пароль, как пони­ма­е­те, дол­жен отличаться.

/usr/bin/mysql_secure_installation

Запу­стит­ся скрипт, с запро­са­ми на то или иное дей­ствие. Вот ответы:

  1. Skip root password for root
    Мы еще не уста­нав­ли­ва­ли пароль для root, поэто­му при запус­ке скрип­та и запро­се паро­ля для root, про­сто нажми­те Enter.
  2. Set root password? [Y/n]
    А вот тут мож­но уста­но­вить пароль для root
  3. Remove anonymous users? [Y/n]
    На вопрос о том, уда­лить ли ано­ним­но­го поль­зо­ва­те­ля, отве­ча­ем да
  4. Disallow root login remotely? [Y/n]
    Не запре­ща­ем кон­нект к наше­му севе­ру с уда­лен­ных сер­ве­ров (если, конеч­но, эта опция вам нуж­на, в дру­гом слу­чае, запре­ти­те ее)
  5. Remove test database and access to it? [Y/n]
    Тесто­вая база нам не нуж­на - уда­ляй­те ее
  6. 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