Mysql-ге қашықтықтан қосылудың үш тәсілі
Mysql localhost-та тұрғанда қалай қосылуды жақсы білеміз:
Ал егер mysql басқа серверде немесе виртуалкада болса ше? Оған қалай қосыламыз. Виртуалканы ашып, соның терминалында жұмыс жасай беруге болады, бірақ бұлай қашанғы жұмыс жасайсың. Сонымен төменде қашықтықтан mysql-ге қосылудың үш тәсілі келтірілген.
1. SSH арқылы серверге қосылу
Ең қарапайым тәсіл. Терминалымыздан ssh-арқылы қосыламыз да mysql-ді пайдалана береміз.
Артықшылықтары:
2. SSH арқылы портты localhost-қа лақтыру
Негізгі ой мынандай: айталық mysql серверде 3306 портында іске қосылған, біз ssh арқылы аламыз да сервердегі 3306 портын localhost-тағы қалаған портымызға лақтырамыз, айталық 3307, яғни, localhost-тағы кез-келген 3307 портына сұраныс серверге жіберіледі.
Портты былай лақтыруға болады (бұл туралы мына мақалада толығырақ жазылған):
192.168.1.156 бұл біздің виртуалкамыздың ip адресі. Енді localhost-тан mysql-ге былай қосыламыз:
Артықшылықтары:
Кемшілігі:
3. Mysql серверінің өзінде қашықтықтан байланысуға рұқсат беру
Бұл нұсқа шынайы серверлерге қолданылмауы тиіс. Қолдансаңыз, қауіпсіздік жағынан опық жеуіңіз мүмкін
Бұл нұсқада mysql серверін баптап, сырттан тікелей қосыла алатын етеміз. Ол үшін, mysql-дің баптау файлын /etc/mysql/my.cnf ашамыз (windows-та ол қайда жататынын білмеймін). Содан соң ондағы мынандай қатарды/баптауды табамыз:
Бұл баптау mysql серверіне қандай ip адрестен қосылуға болатындығын көрсетеді, үнсіз келісім бойынша ол 127.0.0.1 (сондықтан да әдетте сіз тек localhost арқылы ғана қосыла аласыз). Оны сіз өз ip адресіңізге өзгертіп қоя аласыз, мысалы:
Өзгерткен соң mysql-ді қайта жүктеуді ұмытпаңыз. Бірақ бұлай жасасаңыз сіз 127.0.0.1 арқылы қосыла алмай қаласыз, сондықтан тестілік виртуалкаларда, барлық ip адрестер үшін рұқсат берген жөн. Олай жасау үшін, бұл баптауды комменттеп тастаңыз:
Бірақ mysql сіздерге әлі де рұқсат бермейді, өйткені енді mysql сізді деректор қоры деңгейінде жібермейді.
Кез-келген хосттан және кез-келген деректер қорына кіре алу үшін mysql-де мынандай сұраныс орындаңыз:
«root» пайдаланушының орнына өзіңіздің пайдаланушы логинін жаза аласыз. Бұл командадан соң сіз, сырттан mysql-ге былай қосыла аласыз:
«xxxx» орнына grant all командасында көрсетілген парольді жазасыз.
Тағы да ескертемін бұл тәсілді тек тестілеу кезінде, бағдарлама жазу кезінде, виртуалкаларға ғана қолдану керек. Бірақ жұмыс жасау кезінде өте ыңғайлы
Артықшылықтары:
Кемшілігі:
mysql -uroot -pxxxx
Ал егер mysql басқа серверде немесе виртуалкада болса ше? Оған қалай қосыламыз. Виртуалканы ашып, соның терминалында жұмыс жасай беруге болады, бірақ бұлай қашанғы жұмыс жасайсың. Сонымен төменде қашықтықтан mysql-ге қосылудың үш тәсілі келтірілген.
1. SSH арқылы серверге қосылу
ssh [email protected]
mysql -uroot -px.x.x.x
Ең қарапайым тәсіл. Терминалымыздан ssh-арқылы қосыламыз да mysql-ді пайдалана береміз.
Артықшылықтары:
- ештеңені баптаудың қажеті жоқ
- байланыс ssh арқылы, яғни, қауіпсіз
- localhost-та тұрған бағдарлама mysql-мен байланыса алмайды, яғни, мускулмен тек терминал арқылы ғана жұмыс жасай аламыз
2. SSH арқылы портты localhost-қа лақтыру
Негізгі ой мынандай: айталық mysql серверде 3306 портында іске қосылған, біз ssh арқылы аламыз да сервердегі 3306 портын localhost-тағы қалаған портымызға лақтырамыз, айталық 3307, яғни, localhost-тағы кез-келген 3307 портына сұраныс серверге жіберіледі.
Портты былай лақтыруға болады (бұл туралы мына мақалада толығырақ жазылған):
ssh -L :3307:127.0.0.1:3306 [email protected]
192.168.1.156 бұл біздің виртуалкамыздың ip адресі. Енді localhost-тан mysql-ге былай қосыламыз:
mysql -uroot -pxxxx -h 127.0.0.1 -P 3307
Артықшылықтары:
- Байланыс ssh арқылы, қауіпсіз
- Mysql localhost-та секілді болып тұрады, localhost-тағы бағдарламалар оңай жұмыс жасай алады
Кемшілігі:
- Жұмыс кезінде лақтыру үшін орындаған команданы аяқтауға болмайды, ол әрдайым ашық тұруы керек
3. Mysql серверінің өзінде қашықтықтан байланысуға рұқсат беру
Бұл нұсқа шынайы серверлерге қолданылмауы тиіс. Қолдансаңыз, қауіпсіздік жағынан опық жеуіңіз мүмкін
Бұл нұсқада mysql серверін баптап, сырттан тікелей қосыла алатын етеміз. Ол үшін, mysql-дің баптау файлын /etc/mysql/my.cnf ашамыз (windows-та ол қайда жататынын білмеймін). Содан соң ондағы мынандай қатарды/баптауды табамыз:
bind-address = 127.0.0.1
Бұл баптау mysql серверіне қандай ip адрестен қосылуға болатындығын көрсетеді, үнсіз келісім бойынша ол 127.0.0.1 (сондықтан да әдетте сіз тек localhost арқылы ғана қосыла аласыз). Оны сіз өз ip адресіңізге өзгертіп қоя аласыз, мысалы:
bind-address = 192.168.2.120
Өзгерткен соң mysql-ді қайта жүктеуді ұмытпаңыз. Бірақ бұлай жасасаңыз сіз 127.0.0.1 арқылы қосыла алмай қаласыз, сондықтан тестілік виртуалкаларда, барлық ip адрестер үшін рұқсат берген жөн. Олай жасау үшін, бұл баптауды комменттеп тастаңыз:
# bind-address = 192.168.2.120
Бірақ mysql сіздерге әлі де рұқсат бермейді, өйткені енді mysql сізді деректор қоры деңгейінде жібермейді.
Кез-келген хосттан және кез-келген деректер қорына кіре алу үшін mysql-де мынандай сұраныс орындаңыз:
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'мұнда парольді жазыңыз';
«root» пайдаланушының орнына өзіңіздің пайдаланушы логинін жаза аласыз. Бұл командадан соң сіз, сырттан mysql-ге былай қосыла аласыз:
mysql -uroot -pxxxx -h 192.168.1.156 -P 3306
«xxxx» орнына grant all командасында көрсетілген парольді жазасыз.
Тағы да ескертемін бұл тәсілді тек тестілеу кезінде, бағдарлама жазу кезінде, виртуалкаларға ғана қолдану керек. Бірақ жұмыс жасау кезінде өте ыңғайлы
Артықшылықтары:
- Кез-келген жерден қосылуға болады
- Жұмыс жасау кезінде ыңғайлы
Кемшілігі:
- Қауіпсіздік жағынан олқылықтар пайда болуы мүмкін
-
+4
Mysql ге қосылу мен SSH (серверге қосылу,OS) — екеуі мүлдем бөлек нәрсе, шатастырмау қажет. SSH туралы жазғандарыңызды алып тастай берсеңіздер де болады.
Меніңше mysql server ге қосылуға жоғарыда келтірілген мысалды тек 1-ші, жалпы әдісі деп қарастыруға болады
1) mysql -h host -u root -pxxxxxx -P port (протокол типі TCP болса ғана)
Және де
2) mysql -u root -pxxxx --socket=/path/to/mysql/socket.sock (соккет) көрсетуге болады.
Mysql-ге тікелей қосылу мен SSH-мен серверге қосылудың айырмышылығын білемін. Мен тек ssh-ны mysql-ге (виртуалкадағы немесе сервердегі mysql-ге, яғни localhost-тағы емес, ЯҒНИ қашықтықтағы) қосылуда қосымша құрал ретінде пайдалануды ұсынып/көрсетіп отырмын. Күнделікті орындалатын жұмысты жеңілдету үшін (әсіресе, егер сіз күніге 10 даған сервердегі mysql-ге қосылып тұратын болсаңыз)
-h туралы не үшін жазғаныңызда мүлдем түсінбедім, мен оны мақалада басқаша қызмет атқарады деп жаздым ба немесе оны дұрыс пайдаланбай отырмын ба? ал -h 127.0.0.1 деп мен біздің қайда қосылып жатқанымызды нақты көрсету үшін жазып отырмын.
Мынау үшін енді рақмет: mysql -u root -pxxxx --socket=/path/to/mysql/socket.sock, өйткені, мен оны осыған дейін пайдаланып көрмеппін, ал оны басқа серверде тұрған mysql үшін қалай пайдаланады? және мен не үшін әр қосылу кезінде сокеттің файлын іздеп отыруым керек? одан алдыңғы әдіс әлдеқайда жақсы емес па?