Краткая инструкция по установке и настройке MySQL на CentOS
делаем выборку и смотрим какие пользователи существуют
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 пользователей установлен пароль.
Проверим полученный результат:
Удаление пользователя:
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
Установка MySQL
Обновляем системуsudo yum update
Проверяем, установлен ли MySQL сервер
mysql
Существуют следующие основные пакеты связанные с mysql:
mysql - клиент mysql
mysql-server - сервер mysql
mysql-devel - для разработки и подключения библиотек и хидеров mysql
mysql-connector-java - JDBC коннектор (используется, например, в EJBCA)
Устанавливаем сервер:
Посмотреть что получилось можно при помощи команды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, можете сделать это так:
Создание локального пользователя
Если в ходе этой конфигурации вы не установили пароль для 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 в Linuxhttps://www.digitalocean.com/community/tutorials/mysql-ru - Как создать нового пользователя и настроить права доступа в MySQL
Комментариев нет:
Отправить комментарий