programing

MySQL: mysql에 대한 원격 연결을 허용하는 방법

luckcodes 2022. 9. 12. 19:55

MySQL: mysql에 대한 원격 연결을 허용하는 방법

MySQL Community Edition 5.5를 로컬 컴퓨터에 설치했으며 외부 소스에서 연결할 수 있도록 원격 연결을 허용하고 싶습니다.

내가 어떻게 그럴 수 있을까?

이는 MySQL에서 기본적으로 허용됩니다.

있는 은, 리모트 「리모트」입니다.root이노블로 명령을 로 실행합니다.이를 활성화하려면 다음 SQL 명령을 로컬로 실행하십시오.

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

그리고 다음 행을 찾아 코멘트합니다.my.cnf파일(보통 파일)에 존재합니다./etc/mysql/my.cnf를 참조해 주세요./etc/sysqld/cnf.d/mysqld.cnf)를 사용합니다.

는, 디렉토리 의 인스톨 디렉토리)에 있습니다. 을 사용하다C:\Program Files\MySQL\MySQL Server 5.5\파일명은 다음과 같습니다.my.ini.

라인 변경

 bind-address = 127.0.0.1

로.

 #bind-address = 127.0.0.1

그리고 MySQL 서버(Unix/OSXWindows)를 재시작하여 변경 내용을 적용합니다.

의 모든 할 수 없었습니다.root단, 포트 "", """ 에 Telnet 중3306MySQL인맥을 받아들이는 거였어요

MySQL에서 사용자를 조사하기 시작했는데 여러 개의 root 사용자가 서로 다른 암호를 가지고 있다는 것을 알게 되었습니다.

select user, host, password from mysql.user;

래서에서...MySQLroot의 모든 패스워드를 다시 설정해, 최종적으로 리모트로 로그인 할 수 있게 되었습니다.root.

use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;

, 이 경로 ./etc/mysql/mysql.conf.d/mysqld.cnf.

(이 길을 찾느라 한동안 고생했어요)

제 경우 cent OS의 리모트 mysql 서버에 접속하려고 했습니다.많은 해결 방법(모든 권한 부여, IP 바인딩 삭제, 네트워킹 활성화)을 사용해도 해결되지 않았습니다.

알고 보니 다양한 솔루션을 조사하던 중 iptables를 발견했는데 mysql 포트 3306이 접속을 받아들이지 않는다는 것을 알게 되었습니다.

다음은 이 문제를 확인하고 해결한 방법에 대한 간단한 메모입니다.

  • 포트가 연결을 허용하는지 확인하는 중:
telnet(mysql 서버 IP) [portNo]
  • 포트 연결을 허용하기 위한 ip 테이블 규칙 추가:
iptables - A INPUT - ieth0 -p tcp -m tcp --dport 3306 -j ACCEPT
  • 프로덕션 환경에서는 권장하지 않지만 iptables가 제대로 구성되지 않은 경우 규칙을 추가해도 문제가 해결되지 않을 수 있습니다.이 경우 다음 작업을 수행해야 합니다.
서비스 iptables 중지

이게 도움이 됐으면 좋겠다.

원격 로그인을 위한 모든 프로세스.리모트 로그인은 디폴트로 오프되어 있습니다.모든 IP에 대해 수동으로 열어야 합니다.모든 IP에 접속할 수 있도록 하다

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';

특정 IP

GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';

그리고나서

flush privileges;

사용자 호스트와 비밀번호를 확인할 수 있습니다.

SELECT host,user,authentication_string FROM mysql.user;

이제 너의 의무는 이것을 바꾸는 것이다.

bind-address = 127.0.0.1

이것은 에서 찾을 수 있습니다.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

만약 거기서 이걸 찾을 수 없다면, 이걸 시도해봐

sudo nano /etc/mysql/my.cnf

이에 대한 코멘트

#bind-address = 127.0.0.1

다음으로 Mysql을 재시작합니다.

sudo service mysql restart

리모트 로그인을 즐길 수 있습니다.

MySQL User의 와일드카드 리모트액세스를 설정하려면 , 다음의 순서에 따라 주세요.

(1) cmd를 연다.

(2) 패스 C:\Program Files\My로 이동합니다.SQL\MySQL Server 5.X\bin 이 명령을 실행합니다.

mysql -u 루트 -p

(3) root password를 입력한다.

(4) 다음의 명령어를 실행하여 권한을 부여한다.

*.*에 대한 모든 권한을 'USERNAME'@'에게 부여합니다.'비밀번호'로 식별되는 IP;

사용자 이름: MySQL 서버에 연결할 사용자 이름입니다.

IP: MySQL 서버에 대한 액세스를 허용하는 공용 IP 주소입니다.

PASSWORD:사용하는사용자명의비밀번호입니다.

사용자가 임의의 IP 주소에서 접속할 수 있도록 IP를 %로 대체할 수 있습니다.

(5) 명령에 따라 전권을 플러싱하고 종료한다.

플래시 특권

종료 또는 \q

여기에 이미지 설명 입력

MySQL 서버를 데이터베이스로 Java Project 작업을 할 때 이 과제를 해결해야 했습니다.

방법은 다음과 같습니다.

먼저 MySQL 서버 구성이 원격 연결을 허용하는지 확인합니다.원하는 텍스트 편집기를 사용하여 MySQL 서버 구성 파일을 엽니다.

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

[ bind - address ]행까지 스크롤하여가 코멘트 아웃 또는 치환되어 있는지 확인합니다.0.0.0.0(모든 리모트 접속을 허용하는 경우) 또는 리모트 접속의 발신기지 IP 주소로 치환됩니다.

필요한 변경을 하면 Configuration파일을 저장하고 종료합니다.MySQL 서비스를 재시작하여 MySQL 구성 파일에 대한 변경 내용을 적용합니다.

sudo systemctl restart mysql

그런 다음 MySQL이 설치된 서버의 MySQL 서버 콘솔에 로그인합니다.

mysql -u root -p

mysql 사용자 비밀번호를 입력합니다.

사용자가 이미 액세스할 수 있는 호스트를 확인합니다.제 경우 사용자는root:

SELECT host FROM mysql.user WHERE user = "root";

이것에 의해, 다음과 같은 출력이 얻을 수 있었습니다.

+-----------+
| host      |
+-----------+
| localhost |
+-----------+

다음, 명령어를 하여 '부르다'를 부여했습니다.root , 「」라고 하는 이름의 my_database:

USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';

주의:%합니다.접근을 허용하는 하려면 , 합니다.- 「 」 、 「 IP 」 。GRANT ALL PRIVILEGES ON *.* TO 'root'@'Ip-Address' IDENTIFIED BY 'my-password';

그 후, 유저가 액세스 할 수 있는 호스트를 확인했습니다.제 경우 사용자는root:

SELECT host FROM mysql.user WHERE user = "root";

이것에 의해, 다음과 같은 출력이 얻을 수 있었습니다.

+-----------+
| host      |
+-----------+
| %         |
| localhost |
+-----------+

마지막으로 다음 명령을 사용하여 다른 서버에서 MySQL 서버에 연결을 시도할 수 있습니다.

mysql -u username -h mysql-server-ip-address -p

여기서 u는 사용자를 나타내고 h는 mysql-server-ip-address, p는 비밀번호를 나타냅니다.제 경우엔 다음과 같았습니다.

mysql -u root -h 34.69.261.158 -p

mysql 사용자 비밀번호를 입력합니다.

MySQL 서버 버전에 따라 다음 출력이 표시됩니다.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

자원:MySQL에 대한 원격 연결을 허용하는 방법

그게 다예요.

이게 도움이 됐으면 좋겠다

MySQL 서버 프로세스가 127.0.0.1 또는 ::1에서만 수신하는 경우 원격으로 연결할 수 없습니다.「 」가 bind-address/etc/my.cnf을 사용법

비(非)-(非)-(非(비)의 특권.localhost이치노

MySQL 에서 을 .brew디폴트로는 로컬인터페이스로만 리슨합니다.하려면 , 「 」를 할 필요가 있습니다./usr/local/etc/my.cnf그리고를 변경합니다를 바꾼다.bind-address부터에서127.0.0.1로.*..

그리고 그럼달려라 달리brew services restart mysql..

그냥 F.Y.만.난 몇 시간 동안 이 문제로 머리를 뽑았어.마지막으로 호스팅 프로바이더에 문의했더니 클라우드 서버를 사용하는 경우 제어판 1과 1에 보조 방화벽이 있어 포트 3306을 복제하고 추가해야 합니다.한 번 더 하자마자 바로 들어갔는데..

방화벽 서비스가 실행 중인 경우 방화벽 포트 3306도 열려 있는지 확인합니다.

이 블로그 How to setup a MySQL server on Local Area Network(로컬 에리어 네트워크)를 설정하는 방법MySQL처음 처음부터에서

한다면 만약mysqld에는 루프백/로컬주소로 설정된 바인드주소가 있습니다(예:127.0.0.1때문에는 루프 백 인터페이스에서 원격 호스트에서 도달하지 못할 때는 서버 원격 호스트에서 닿을 수 있지 않을 것이다.리모트 호스트에서는 루프백인터페이스에 도달할 수 없기 때문에 리모트호스트에서는 서버에 도달할 수 없습니다.

을 사용하다로 설정합니다.0.0.0.0 )::IPv4+6) 를 사용해 임의의 호스트로부터의 접속을 받아들이거나, 1 개의 인터페이스만으로 접속을 허가하는 경우는, 외부로부터 도달 가능한 다른 주소에 액세스 할 수 있습니다.

원천

리모트 루트액세스를 유효하게 하면 위험할 수 있습니다.보다 제한적인 권한을 가진 사용자 계정을 설정하는 것이 좋습니다.다음의 3개의 스텝으로 실행할 수 있습니다.

  1. 은 ''로 이 맞는지 확인합니다.bind-address ...my.ini my.cnf 파는f 。존재하지 않으면 다음 단계로 넘어갑니다.은 이 파일 에 있습니다.C:\ProgramData\MySQL\MySQL Server 8.0를 클릭합니다.

  2. 후 에 "", "", "", "", "", "", "", "", "",localhost[호스트 매칭 제한]호스트 매칭 제한]않는, 「이렇게」, 「이렇게」를 수 .%시험 목적으로 그 분야에서.테스트 목적으로 그 분야에 종사하고 있습니다.당신은 서버에 MySQL워크 벤치와 지역 연결을 열어 준 Server&gt으로 갔는데, 이를 수행하려면 있으면 MySQLWorkbench에서 서버에 대한 로컬 연결을 열고 서버>로 이동합니다 이 할 수 있다.메뉴에서 사용자 및 Privileges 바와 연결할 사용자 계정을 찾길 바란다.메뉴바의[사용자]및[특권]를 클릭하여 접속할 사용자 계정을 검색합니다.

[ Limit to Hosts Matching ]필드는 로컬 이외의 접속을 금지합니다.즉, IP 주소의 패턴으로 허가된 접속을 제한합니다.가능한 한 제한적일 수 있도록 정적 IP 주소 또는 서브넷에서 MySQL 서버에 액세스하는 것이 이상적입니다.

  1. 방화벽은 MySQL Server 응용 프로그램이 원하는 포트를 통해 통신할 수 있도록 허용해야 합니다.사용자와 서버 사이의 물리 네트워크 기기는 접속하는 포트(일반적으로 포트 3306)로 통신할 수 있어야 합니다.

그리고 OSX사람들에게는bind-address 매개 변수는 일반적으로 launchd plist이 아니라my.ini 파일에서는 설정됩니다 알고 있어야 한다.OSXbind-address 파라미터가설정되어 있습니다 plist로아닌 launchd 파일이 my.ini 사용자에게는.그래서 제 경우에, 저는그래서제 경우엔,을 제거했다.<string>--bind-address=127.0.0.1</string>부터에서/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist..

윈도우에서 PC 이름을 사용해야 할 때가 있다.

mysql 설정 파일에 넣습니다.

mysqld.cnf SET bind-address= 0.0.0

(tcp/ip 경유로 접속을 수신할 수 있도록 하기 위해)

두 번째 단계) mysql에 있는 사용자, 테이블 사용자, Windows Propierties에 있는 pc 이름IP가 아닌 사용자로 만듭니다.

여기에 이미지 설명 입력

  • 포트 3306에 대한 와일드카드 액세스에 대한 원격 서버 허가 권한을 확인합니다.

sudo lsof - i - P - n | grep Listen

다음과 같으면 안 됩니다.

Mysqld 23083 mysql 21u IPv4145900142 0t0 TCPmysqld 23083 mysql 21u IPv4145900142 0t0 TCP.127.0.0.1:3306(LISTEN):3306(리슨)

이 경우 /etc/mysql/mysql.conf.d/mysql.cnf 또는 /etc/mysql/mariadb.conf.d/50-server.cnf를 다음과 같이 업데이트해야 합니다.

bind-address = 127.0.0.1 --> 0.0.0

그런 다음 mysql "sudo service mysql restart"를 재시작합니다.

클라이언트에서 mySQL 연결을 테스트하려면:

nc - vz <host _ address > 3306

/etc/mysql/mysql.conf.d/mysqld.cnf 또는 /etc/mysql/my.cnf 링크에서 코멘트를 닫습니다.

bind-address = 127.0.0.1  =>>  #bind-address = 127.0.0.1

모든 컴퓨터가 액세스할 수 있도록 호스트 이름을 변경하고 다음 SQL 명령을 로컬로 실행합니다.

UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='root';
FLUSH PRIVILEGES;

서비스 재시작:

sudo service mysql restart

포트 mysql 열기:

sudo ufw allow 3306

언급URL : https://stackoverflow.com/questions/14779104/mysql-how-to-allow-remote-connection-to-mysql