вторник, 31 мая 2016 г.

Установка и настройка MySQL на CentOS

Краткая инструкция по установке и настройке MySQL на CentOS

Установка MySQL

Обновляем систему
sudo yum update
Проверяем, установлен ли MySQL сервер
mysql
Существуют следующие основные пакеты связанные с mysql:
mysql - клиент mysql
mysql-server - сервер mysql
mysql-devel - для разработки и подключения библиотек и хидеров mysql
mysql-connector-java - JDBC коннектор (используется, например, в EJBCA)

Устанавливаем сервер:
sudo yum install mysql mysql-server
Теперь надо установить сервер mysql на запуск в определенные runlevel‘ы (2, 3 и 5):
sudo /sbin/chkconfig --level 2345 mysqld on
Уточнение значения runlevel‘а символьному:
cat /etc/inittab
Посмотреть что получилось можно при помощи команды
/sbin/chkconfig --list
В результате должно быть так
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Запуск демона mysql:
sudo service mysqld start

Настройка прав пользователей

Подключаемся к серверу
mysql -u root
Пока что у рутового пользователя пароль пустой
делаем выборку и смотрим какие пользователи существуют
select User,Host from mysql.user;

  +-----------------------+------+  
  | host                  | user |  
  +-----------------------+------+  
  | 127.0.0.1             | root |  
  | localhost             |      |  
  | localhost             | root |  
  | localhost.localdomain |      |  
  | localhost.localdomain | root |  
  +-----------------------+------+
По умолчанию, после установки, можно подключиться к серверу MySQL под root-ом без ввода пароля. Поэтому назначим пароль и сделаем еще несколько настроек, выполнив скрипт:
/usr/bin/mysql_secure_installation
Запустится скрипт, с запросами на то или иное действие. Вот ответы:
Skip root password for root
Мы еще не устанавливали пароль для root, поэтому при запуске скрипта и запросе пароля для root, просто нажмите Enter.
Install new password for root: security
Устанавливаем новый пароль для root
Do remove an anonymous user
Удалить ли анонимного пользователя, отвечаем да
Do not disallow remote connections
Не запрещаем коннект к нашему северу с удаленных серверов (если, конечно, эта опция вам нужна, в другом случае, запретите ее)
Do remove a test database
Тестовая база не нужна - удаляйте ее
Do reload the privileges
Перегрузим привилегии для их активации
Теперь для всех root пользователей установлен пароль.
Проверим полученный результат:
mysql -u root 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Доступа нет, все хорошо.

Если в ходе этой конфигурации вы не установили пароль для 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');
SET PASSWORD FOR 'root'@'%' = PASSWORD('security');
или
UPDATE mysql.user SET Password = PASSWORD('security') WHERE user = 'root';
Если же вы не запускали конфигурацию через mysql_secure_installation или не хотите этого делать по каким-то другим причинам, следующие команды удалят анонимных пользователей:
DROP USER ''@'localhost';
DROP USER ''@'localhost.localdomain';
Открываем порты для mysql:
sudo iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo 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
Перезапускаем сервис:
sudo service mysqld restart
Добавление пользователей и настройка прав доступа для них. Кроме пользователя root нам потребуются и другие пользователи для доступа и редактирования БД.
Создание локального пользователя
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Предоставление всех прав для локального пользователя
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' WITH GRANT OPTION;
Создание удаленного пользователя
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';
Предоставление всех прав для удаленного пользователя
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'%' WITH GRANT OPTION;
Удаленный пользователь потребуется, например, для доступа из приложений на других хостах.
Список возможных привилегий
  • ALL PRIVILEGES - как мы видели ранее, это даст пользователю MySQL полный доступ к заданной базе данных (если база данных не указана, то ко всем).
  • CREATE - позволяет создавать новые таблицы или базы данных.
  • DROP - позволяет удалять таблицы или базы данных.
  • DELETE - позволяет удалять строки из таблиц.
  • INSERT - позволяет добавлять строки в таблицу.
  • SELECT - позволит использовать команду Select для чтения из баз данных.
  • UPDATE - позволит редактировать строки таблиц.
  • GRANT OPTION - позволит назначать или удалять права доступа для других пользователей.
Так же привилегии можно указывать для отдельных баз, таблиц и т.д.
После установки всех необходимых привилегий необходимо протолкнуть их:
FLUSH PRIVILEGES;
Лишения прав доступа практически идентично их назначению:
REVOKE [тип прав] ON [название базы данных].[название таблицы] FROM ‘[имя пользователя]’@‘localhost’;
Удаление пользователя:
DROP USER ‘demo’@‘localhost’;

Ссылки по теме

http://gahcep.github.io/blog/2013/03/11/linux-mysql-setup/ - Правильная установка и настройка MySQL в Linux

http://centos.name/?page/howto/LAMP/ - Установка Apache, MySQL, PHP с использованием YUM

http://stackoverflow.com/questions/1559955/host-xxx-xx-xxx-xxx-is-not-allowed-to-connect-to-this-mysql-server - Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server

https://www.digitalocean.com/community/tutorials/mysql-ru - Как создать нового пользователя и настроить права доступа в MySQL

http://www.thegeekstuff.com/2010/08/allow-mysql-client-connection/ - How to Allow MySQL Client to Connect to Remote MySQL server

http://dev.mysql.com/doc/refman/5.7/en/connecting.html - 5.2.2 Connecting to the MySQL Server

http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html - 7.2.1 Privileges Provided by MySQL


Комментариев нет:

Отправить комментарий