MySQL-ге қашықтан қосылу
Әдепкі бойынша MySQL сервері қосылымдарды тек жергілікті мекенжайлармен, яғни MySQL жұмыс істеп тұрған сол сервердің өзінен орындалатын қосылымдармен шектейді.
Алайда, егер сізге сыртқы желілерден MySQL-ге қашықтан қосылу қажет болса, келесі қадамдарды орындауыңыз керек:
- MySQL конфигурациялық файлына өзгерістер енгізу.
- MySQL пайдаланушыларына қашықтан қосылуға рұқсат беру.
1-қадам. Конфигурациялық файлды өңдеу
Ubuntu-да бұл файл әдетте /etc/mysql/mysql.conf.d/mysqld.cnf жолында орналасады.
CentOS-та бұл /etc/mysql/my.cnf немесе /etc/my.cnf файлы болуы мүмкін.
Дұрыс жолды көрсетіп, файлды өңдеуге ашыңыз:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Файлдан келесі жолдарды табыңыз:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
bind-address параметрі MySQL қай мекенжайлардан қосылуға рұқсат беретінін анықтайды. Бұл жағдайда қосылуға тек жергілікті серверден (localhost, 127.0.0.1) рұқсат етілген.
Қажетті баптауларды келесі пішімде көрсете аласыз:
- Белгілі бір IP мекенжайынан қол жеткізуге рұқсат беру үшін 127.0.0.1 мәнін қажетті IP мекенжайына ауыстырыңыз.
- Кез келген IP мекенжайынан қол жеткізуге рұқсат беру үшін 0.0.0.0 мәнін орнатыңыз. Алайда абай болыңыз, себебі бұл қауіпсіз болмауы мүмкін.
Файлды жауып, өзгерістерді сақтаңыз (мысалы, nano-да мұны Ctrl+X, содан кейін Y, содан кейін Enter пернелерін басу арқылы жасауға болады).
Содан кейін MySQL қызметін қайта іске қосыңыз:
sudo systemctl restart mysql
2-қадам. MySQL пайдаланушысын жасау
Тек жергілікті қосылымдардан қол жеткізе алатын барлық MySQL пайдаланушыларының тіркелгісі user@localhost түрінде болады. Пайдаланушының MySQL-ге қашықтан қосылуына рұқсат беру үшін user@қажетті_IP (немесе кез келген IP мекенжайынан қосылуға рұқсат беру үшін user@%) түріндегі тіркелгі жасау қажет.
Бұл баптауды пәрмен жолы немесе phpMyAdmin арқылы орындауға болады.
Пәрмен жолын пайдалану
Алдымен MySQL-мен байланыс орнатыңыз:
sudo mysql
Пайдаланушыны жасау және оған қажетті артықшылықтарды беру үшін келесі командаларды пайдаланыңыз. Төмендегі мысалда ALL PRIVILEGES артықшылықтарының толық жинағы пайдаланылған, бірақ тек белгілі бір құқықтарды (мысалы, CREATE, INSERT, UPDATE және т.б.) көрсетіп, қол жеткізуді баптай аласыз.
Егер жаңа пайдаланушы белгілі бір дерекқорға кез келген мекенжайдан қосыла алуы қажет болса, келесі команданы орындаңыз:
mysql> GRANT ALL PRIVILEGES ON база_атауы.* TO 'пайдаланушы_аты'@'%' IDENTIFIED BY 'құпиясөз';
Егер пайдаланушының қол жеткізуін тек белгілі бір мекенжаймен шектеу қажет болса, % таңбасын сол мекенжайға ауыстырыңыз, мысалы:
mysql> GRANT ALL PRIVILEGES ON база_атауы.* TO 'пайдаланушы_аты'@'123.45.67.8' IDENTIFIED BY 'құпиясөз';
Пайдаланушыға бір дерекқорға ғана емес, барлық дерекқорларға қосылуға рұқсат беру үшін келесі команданы орындаңыз:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'пайдаланушы_аты'@'123.45.67.8' IDENTIFIED BY 'құпиясөз';
phpMyAdmin пайдалану
phpMyAdmin-ге кіріп, «Пайдаланушы тіркелгілері» -> «Жаңа тіркелгі қосу» бөліміне өтіңіз.
"Хост атауы" бөлімінде "Кез келген хост" опциясын таңдап, кез келген мекенжайдан қосылуға рұқсат беру үшін % таңбасын немесе нақты IP мекенжайын көрсетіңіз.
Содан кейін пайдаланушы үшін қажетті артықшылықтарды баптаңыз. Бұл құқықтардың толық жинағы немесе шектеулерді баптау болуы мүмкін (мысалы, осы тіркелгі үшін дерекқор кестелерін жоюға тыйым салуға болады; жоюға тек жергілікті қосылым кезінде рұқсат етіледі).
Брандмауэр шектеулері
MySQL-ге қашықтан қосылу брандмауэр баптауларымен шектелуі мүмкін. Мысалы, Bitrix 7 орнатылған серверде мұндай қосылым iptables шектеулеріне байланысты қолжетімсіз болуы ықтимал. Оны іске қосу үшін брандмауэр ережелеріне қосымша өзгерістер енгізу, мысалы, 3306 портын ашу қажет болады.
Бұл портқа кез келген мекенжайдан қол жеткізуді ашуға болады, бірақ мұндай баптау қауіпсіз емес деп саналады. Қол жеткізуге тек нақты IP мекенжайларынан рұқсат беру ұсынылады.
Егер iptables брандмауэрі пайдаланылса, келесі команданы орындауға болады:
sudo iptables -A INPUT -s 123.45.67.8 -p tcp --destination-port 3306 -j ACCEPT
123.45.67.8 мекенжайын өзіңізге қажетті мекенжайға ауыстырыңыз.
Егер оның орнына UFW брандмауэрі пайдаланылса, баптауды былай орындауға болады:
sudo ufw allow from 123.45.67.8 to any port 3306
Баптау аяқталғаннан кейін келесі команданы орындап, пайдаланушының MySQL-ге қашықтан қосыла алатынына көз жеткізіңіз:
mysql -u пайдаланушы_аты -h mysql_хост_мекенжайы -p