네트워크에서 특정 주소로 mysql에 액세스합니다. MySQL 서버에 대한 원격 액세스. MySQL 데이터베이스에 대한 연결 확인

MySQL 서버에는 들어오는 연결을 수락하기 위해 특정 주소를 수신하는 기능이 있습니다. "기본적으로" 설치되면 각 MySQL 서버는 "수신"합니다. 현지 주소 127.0.0.1 , 모든 마리아DB 서버모든 소스로부터의 연결을 기다립니다(수신 0.0.0.0 ). 다음에서 ISP매니저 라이트그리고 사업버전 5.95.0 이상에는 연결된 데이터베이스 서버에 대한 원격 액세스 설정을 변경하는 기능이 추가됩니다.

주목! 이 기능은 PostgreSQL에는 구현되지 않습니다.

라이트

설정->데이터베이스 서버. 연결된 서버를 선택하고 버튼을 클릭하세요. 변화. 수신 IP 주소를 변경하려면 양식에서 원격 액세스를 활성화하고 나타나는 목록에서 주소를 선택하십시오.

사업

설정을 변경하려면 다음으로 이동하세요. 클러스터 설정" -> 클러스터 노드 . 역할이 있는 클러스터 노드 선택섬기는 사람 MySQL DBMS, 버튼을 누르세요 변화. 양식에서 원격 액세스 항목을 선택하고 IP 주소를 선택해야 합니다.

주목! 다음에 새로 설치하는 경우 로컬 노드클러스터 원격 액세스가 비활성화되었습니다. 기본적으로 역할이 있는 모든 새 클러스터 노드에 대해 MySQL DBMS 서버원격 액세스가 활성화되고 수신 주소가 선택됩니다. 0.0.0.0

데이터베이스 사용자 생성

원격 액세스 작업이 적절한 형태로 이루어지기 때문에 데이터베이스 사용자 생성 및 편집이 변경됩니다. 사용자가 있어야 할 서버가 비활성화된 경우 원격 액세스, 동일한 이름의 항목은 사용자 설정에서 사용할 수 없습니다.

APS 스크립트 설치

안에 비즈니스 버전패널에서 APS 설치는 사소한 변경을 예상합니다. 사용자의 기본 역할이 MySQL 역할과 다른 클러스터 노드에 있는 경우 APS를 설치하려고 할 때 서버에서 원격 액세스가 비활성화되면 형식의 오류가 나타납니다.

다른 컴퓨터에서 실행되는 서비스의 경우. 안에 일반적인 경우우리는 2단계를 수행해야 합니다:

가) 허용하다 MySQL 서버오디션 네트워크 인터페이스(127.0.0.1뿐만 아니라)

b) 네트워크 사용자에 대한 권한을 생성합니다.

첫 번째 요점이 어느 정도 명확하다면 (b) 지점에 대한 설명이 필요합니다. 사실은 일반적으로 사용자가 "username"@"localhost"와 같이 생성되어 특정 데이터베이스에 대해 특정 권한을 부여할 수 있지만 localhost에서만 가능하다는 것입니다. 네트워크에서 이러한 사용자는 연결할 수 없습니다. MySQL은 비밀번호나 사용자 이름이 올바르지 않다고 알려줍니다. 비결은 MySQL에 사용자 목록이 포함되어 있으며, 사용자가 연결할 수 있는 컴퓨터별로 구분되어 있다는 것입니다. 따라서 사용자 User1은 비밀번호 ABCD를 사용하여 localhost에서 연결할 수 있으며, 주소 192.168.0.1에서는 비밀번호 BBBCCC로, 주소 192.168.1.1에서는 비밀번호 BCDE로 일부 데이터베이스에만 등록할 수 있습니다. 저것들. 사용자가 연결할 수 있는 컴퓨터, 이 경우 사용자가 갖게 될 비밀번호, 사용자가 권한을 갖게 될 데이터베이스를 설정할 수 있습니다. 실제로 mysql 데이터베이스를 살펴보면 이 사용자는 한 명이 아니라 세 명의 다른 사용자인 user1@localhost, [이메일 보호됨]그리고 [이메일 보호됨]. 저것들. MySQL의 관점에서 이것은 다른 사용자, 각각 다른 권한과 비밀번호를 가집니다. 따라서 네트워크에서 액세스하려면 MySQL에서 localhost가 아닌 다른 것을 나타내는 추가 사용자를 생성해야 합니다. 또한 이러한 사용자가 연결할 수 있는 특정 IP 주소를 지정하거나 특수 문자"%"는 "localhost 이외의 모든 컴퓨터"를 나타냅니다. 다음은 사용자 이름의 예입니다.

    username@"localhost": localhost에서만 연결할 수 있습니다.

    사용자 이름@"192.168.0.1": 192.168.0.1에서만 연결할 수 있습니다.

    username@"%" : localhost를 제외한 모든 컴퓨터에서 연결할 수 있습니다.

    username@"192.168.0.%" : IP 주소가 192.168.0으로 시작하는 모든 컴퓨터에서 연결할 수 있습니다.

보시다시피, localhost에 대해 사용자는 항상 별도로 지정되어야 합니다. 한 사용자에 대해 여러 IP 주소를 지정해야 하는 경우... 불행하게도 이러한 IP 주소를 별도로 입력하거나 쉼표로 구분하여 입력해야 하지만 각 쉼표 뒤에는 다시 IDENTIFIED BY와 같은 구성이 필요합니다. 이제 네트워크에서 MySQL 서버 액세스 권한을 부여해 보겠습니다. 1) 먼저, 서버가 localhost뿐만 아니라 요청도 수신하는지 확인해야 합니다.

데비안의 경우:

/etc/mysql/my.cnf 파일을 열고 그 안에서 바인드 주소 줄을 찾으세요. 주석을 제거하고 값 0.0.0.0을 포함해야 합니다.

# 고양이 /etc/mysql/my.cnf | grep 바인드 주소

바인드 주소 = 0.0.0.0

줄을 변경한 경우 MySQL 서버를 다시 시작해야 합니다.

# /etc/init.d/mysql 재시작

을 위한FreeBSD:

기본적으로 FreeBSD 서버 MySQL은 모든 사람의 말을 듣습니다. 사용 가능한 인터페이스추가로 변경할 필요가 없습니다.

2) 이제 네트워크에서 액세스할 수 있는 사용자를 추가해야 합니다. 이것이 없으면 서버는 네트워크를 수신하지만 여전히 사용자를 허용하지 않습니다.

# mysql-uroot–p

비밀번호: // GreetingMySQL

mysql> "password1"로 식별된 "user1"@"192.168.0.%"에 *.*에 대한 모든 권한을 부여합니다.

mysql> "password2"로 식별되는 "user2"@"%"에게 mydatabase.*에 대한 모든 권한을 부여합니다.

이 코드에서 사용자 user1은 서버의 모든 데이터베이스에 대한 전체 액세스가 허용되지만 네트워크 192.168.0.*의 컴퓨터에서만 허용됩니다.

두 번째 사용자는 모든 컴퓨터에서 로그인할 수 있지만(물론 localhost는 제외) mydatabase에만 전체 액세스 권한이 있습니다. 마찬가지로 필요한 권한이 있는 필수 사용자를 추가할 수 있습니다.

3) 확인 네트워크 액세스.

$ mysql -u 사용자 이름 -p -h 192.168.0.100

192.168.0.100 대신 MySQL 서버가 있는 머신의 IP 주소를 지정하고 사용자 이름 대신 사용자 이름을 지정하십시오. 서버가 로그인을 허용하지 않으면 먼저 해당 서버로 가는 도중에 방화벽이 있는지, 그리고 MySQL 포트: 3306이 이러한 방화벽에 열려 있는지 확인하십시오.

원격 MySQL 연결을 사용하면 다음에서 호스팅 서버의 데이터베이스에 연결할 수 있습니다. 가정용 컴퓨터귀하에게 편리한 데이터베이스 프로그램을 사용하십시오.

쉬운 연결

설정용 쉬운 연결외부에서 MySQL로 이동하려면 제어판으로 이동하여 "데이터베이스" 섹션으로 이동하세요. MySQL 데이터».

“IP 접속” → “IP 추가” 버튼을 클릭하고 네트워크에 접속할 IP 주소를 지정하세요. IP 주소는 inet.from.sh 웹사이트에서 확인할 수 있습니다.

양식에서 옥텟 단위의 % 기호를 사용하여 IP 주소를 지정할 수도 있습니다. 예를 들어, 한 서브넷의 IP 주소로부터의 액세스를 제한하려면 다음을 수행하십시오.

192.168.1.%

추가를 클릭합니다.

이제 컴퓨터에서 호스팅 서버의 데이터베이스에 연결할 수 있습니다. 연결해서 사용하려면 다음 설정:

  • 연결할 서버: 귀하의 도메인 이름(예: yourdomain.ru)
  • 연결 포트: 3306;
  • 사용자 이름 및 비밀번호: 데이터베이스를 생성할 때 설정한 사용자 이름과 비밀번호입니다.

MySQL -P 3306 -h yourdomain.ru -u mylogin_user -p mylogin_db

SSH 터널을 통한 보안 연결

데이터 보안을 보장하려면 SSH 터널을 통해 MySQL 데이터베이스에 대한 연결을 사용하십시오. 데이터는 암호화된 형태로 SSH 터널을 통해 전송되므로 가로채기 가능성이 없습니다.

MS Windows를 실행하는 컴퓨터에서 MySQL 데이터베이스에 연결

컴퓨터에 프로그램을 설치하세요. 퍼티. 무료입니다 소프트웨어, 공식 홈페이지에서 다운로드하실 수 있습니다.

프로그램을 실행하세요.

그 후 “추가” 버튼을 클릭하세요.

그 후, “열기” 버튼을 클릭하세요. 호스트에 대한 연결이 설정됩니다.

로그인 정보를 사용하여 로그인 및 비밀번호로 호스팅 제어판에 로그인하세요.

터널이 설치되어 있습니다. 데이터베이스에 연결하려면 제어판의 데이터베이스 섹션에서 데이터베이스를 생성할 때 지정한 사용자 이름과 비밀번호를 사용하십시오. 서버 주소는 127.0.0.1, 연결 포트는 3306을 사용하세요.

사용한 연결 예 MySQL 프로그램(연결 시 비밀번호가 요청됩니다):

주목:컴퓨터가 이미 MySQL 데이터베이스 서버를 실행하고 있다면 연결하세요. 원격 서버포트 3306을 통해서는 불가능합니다. 이 경우 putty에서 연결을 생성할 때 "소스 포트"로 다른 포트를 지정하십시오. 예를 들면 다음과 같습니다. 3307 . 데이터베이스에 연결할 때 이 포트를 사용하십시오.

Linux OS를 실행하는 컴퓨터에서 MySQL 데이터베이스에 연결

명령 프롬프트에서 다음 명령을 실행합니다.

SSH -L3306:localhost:3306 -n [이메일 보호됨]

  • 3306 (-L 키 바로 뒤) - 다음으로 포트 로컬 컴퓨터, mysql 클라이언트와 연결할 수 있습니다.
  • 귀하의 로그인- 귀하의 계정 이름(제어판에 로그인)
  • yourdomain.ru- 귀하의 사이트 이름.

비밀번호로 호스팅 제어판에 로그인할 때 비밀번호를 사용하세요.

터널이 설치되어 있습니다. 데이터베이스에 연결하려면 제어판의 데이터베이스 섹션에서 데이터베이스를 생성할 때 지정한 사용자 이름과 비밀번호를 사용하십시오. 서버 주소는 127.0.0.1, 연결 포트는 3306을 사용하세요.

mysql 프로그램을 사용하여 연결하는 예(연결 시 비밀번호가 요청됩니다):

MySQL -P 3306 -h 127.0.0.1 -u mylogin_user -p mylogin_db

주목:컴퓨터에서 이미 MySQL 데이터베이스 서버를 실행 중인 경우 포트 3306에서 원격 서버에 연결할 수 없습니다. 이 경우 ssh를 시작할 때 -L 키 바로 뒤에 다음을 지정하십시오. 대체 포트예: 3307. 데이터베이스에 연결할 때 이 포트를 사용하십시오.

MySQL 데이터베이스에 대한 연결 확인

유틸리티를 사용하여 데이터베이스에 대한 연결을 확인할 수 있습니다. 텔넷. 인터페이스에 로그인 명령줄(MS Windows OS의 경우: 시작 → 실행→ cmd.exe), 다음 명령을 입력하세요.

텔넷 127.0.0.1 3306

연결이 설정되면 터널 설정 절차가 완료된 것으로 간주될 수 있습니다. 그렇지 않은 경우에는 설정을 주의 깊게 확인하고 네트워크 문제가 없는지 확인한 후 기술 지원에 문의해야 합니다.

MySQL 서버를 설치한 후에는 동일한 시스템에서만 연결할 수 있습니다. 대부분의 경우 MySQL은 웹에서 사용되며 드물게 웹 서버와 데이터베이스 서버가 분리되어 있기 때문에 이는 시스템 보안 목적으로 수행되었습니다.

기업 부문에서는 모든 유사한 작업에 하나의 서버를 사용하는 것이 더 정확합니다. MySQL이 필요할 수 있는 모든 서버에 하나의 데이터베이스를 유지하는 것은 어리석은 일입니다. 따라서 데이터베이스 서버가 하나 있어야 합니다. 필요 수량다양한 작업을 위한 데이터베이스.

그런데 웹에서는 하나의 서버 성능이 부족한 경우에만 데이터베이스 서버와 웹 서버를 분리합니다. 전용 서버를 임대하고 그 서버에 데이터베이스를 호스팅합니다. 하나의 DC 내에서만 이 작업을 수행하는 것이 합리적이라는 점을 분명히 하고 싶습니다.

원격으로 MySQL에 연결 허용

MySQL 자체의 구성 파일에는 매개변수가 있습니다. 바인드 주소이에 대한 책임은 다음과 같습니다.

  1. 열려 있는 구성 파일편집용:
    sudo nano /etc/mysql/my.cnf
  2. 해당 줄을 주석 처리합니다.
    # 바인드 주소 = 127.0.0.1
  3. MySQL을 다시 시작합니다.
    sudo 서비스 mysql 재시작

이 줄을 주석 처리하는 것은 IP 주소를 할당하는 것과 같습니다. 0.0.0.0 즉, 모든 사람이 연결할 수 있도록 허용합니다. 이 줄에는 2개의 IP 주소를 지정할 수 없습니다. MySQL 서버에 대한 연결을 제한해야 하는 경우 iptables의 기능을 사용해야 합니다.

이제 텔넷 클라이언트를 통해 데이터베이스 서버에 연결할 수 있지만 내부로 들어가려면 다음이 필요합니다. 계정, 이는 localhost에서만 연결이 허용되지 않습니다. 이렇게 하려면 서버 자체에서 MySQL에 연결하고 다음 사용자를 생성해야 합니다.

MySQL -u 루트 -p

그리고 다음 명령을 사용하여 사용자를 생성합니다.

*.*에 대한 모든 권한을 부여 옵션과 함께 "password"로 식별된 "new_user"@"remote_address"에 부여합니다.

이 줄은 무제한의 권한을 가진 사용자를 생성하는데, 이는 전적으로 올바르지 않습니다. 원격으로 접속하는 사용자의 접근을 최대한 제한하는 것이 더 정확합니다. 따라서 명령은 다음과 같습니다.

GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER ON "database_name".* TO "new_user"@"remote_address"에 대한 부여 옵션은 "password"로 식별됩니다.

이 명령을 사용하여 사용자의 권한을 하나의 데이터베이스와 해당 데이터베이스에 대한 작업으로 제한했습니다.

사용자에 대해 지정할 수 있는 모든 권한의 전체 목록:

  • 모든 권한- 모든 권리 지정된 객체단, 이 개체에 대한 권한 할당은 제외됩니다.
  • 만들다– 테이블을 생성할 수 있는 권한
  • 바꾸다– 테이블을 변경할 수 있는 권리
  • 떨어지다– 테이블을 파괴할 권리
  • 잠금 테이블– 테이블을 잠글 수 있는 권리
  • 임시 테이블 생성– 임시 테이블을 생성할 수 있는 권한
  • 루틴 만들기– 저장 프로시저 및 기능을 생성할 수 있는 권리
  • 루틴 변경– 저장 프로시저 및 기능을 변경하거나 파기할 수 있는 권리
  • 보기 만들기– 표현을 만들 수 있는 권리
  • 방아쇠– 트리거를 생성하고 파기할 수 있는 권리
  • 색인– 색인을 생성하고 파기할 수 있는 권리
  • 실행하다– 저장 프로시저 및 기능을 실행할 수 있는 권리
  • 이벤트– 이벤트를 만들 수 있는 권리
  • 사용자 생성– 사용자를 생성, 삭제, 이름 변경하고 모든 권한을 제거할 수 있는 권한입니다. 글로벌 수준에서만 임명됩니다.
  • 선택하다– 샘플을 채취할 권리
  • 삭제– 삭제할 권리;
  • 끼워 넣다– 삽입할 권리;
  • 업데이트– 업데이트할 권리
  • 파일– SELECT ... INTO OUTFILE 및 LOAD DATA INFILE 명령을 사용할 수 있는 권한
  • 프로세스– SHOW PROCESSLIST 명령을 사용하여 모든 프로세스를 볼 수 있는 권한
  • 데이터베이스 표시– 계획 목록을 볼 수 있는 권리
  • 보기 보기– 보기 목록을 볼 수 있는 권리
  • 일시 휴업– 폐쇄할 권리.

이 문서는 처음으로 MySQL 데이터베이스에 대한 원격 연결을 설정해야 하는 사람들을 위한 것입니다. 이 기사에서는 설정 시 발생할 수 있는 어려움에 대해 설명합니다. 원격 연결그리고 이를 극복하는 방법에 대해.

원격 기지와 연결을 설정하는 방법은 무엇입니까?
원격 연결을 설정하려면 설정 중인 연결을 특성화하는 매개변수를 지정해야 합니다. 이것

* --주인
* --규약
* --포트

네 가지 가능한 프로토콜 중에서 TCP/IP만 원격 연결을 허용하므로 첫 번째 요구 사항은 TCP/IP를 통해 네트워크에서 컴퓨터에 액세스할 수 있어야 한다는 것입니다. 다음으로 연결 라인에 호스트 이름(또는 데이터베이스가 있는 머신의 IP 주소)을 추가해야 합니다.
mysql —host=host_name localhost를 호스트 이름으로 지정하면(또는 기본값이므로 해당 매개변수가 없으면) 로컬 시스템에 액세스하게 됩니다.

매개변수에는 긴 표기와 짧은 표기의 두 가지 표기 형식이 있습니다. 매개변수에 값이 있는 경우(예를 들어 호스트의 경우 연결하려는 호스트의 이름을 지정해야 함) 항목의 짧은 형식을 사용하거나 사용하지 않고 사용할 수 있습니다. 공백(이 규칙의 예외는 비밀번호입니다). 따라서 다음 세 항목은 동일합니다.

* mysql —host=myhost.ru
* mysql -h myhost.ru
* mysql -hmyhost.ru

원격 기지에 대한 연결을 설정하는 방법은 무엇입니까?

MySQL에서 사용자는 이름과 액세스할 수 있는 호스트라는 두 가지 매개변수로 특성화됩니다. 기본적으로 액세스는 로컬 컴퓨터에서만 허용됩니다. 사용자 user@localhost의 경우. GRANT 명령을 사용하여 사용자에게 액세스 권한이 부여됩니다. 명령은 루트에서 실행됩니다.

예를 들어, 어떤 호스트에서든 연결할 수 있는 사용자를 생성하려는 경우 완전한 권리, 다음 명령을 실행해야 합니다.
`database_name`에 대한 모든 권한을 부여합니다.* 'password'로 식별된 myuser@%에게;

메모. 그것을 참고 이 명령 localhost에 해당하는 127.0.0.1을 제외한 모든 IP에서 사용자 myuser에게 액세스를 제공합니다.
myuser@localhost 사용자의 경우 별도의 GRANT 명령을 사용하여 권한을 부여해야 합니다.

연락하기로 결정한 경우 로컬 머신 TCP/IP 프로토콜을 사용하는 원격 액세스의 경우 myuser@localhost와 myuser@ip_of_your_computer는 서로 다른 사용자이며 각각 별도의 명령을 사용하여 권한을 부여해야 한다는 점을 잊지 마십시오.

두 번째 예에서는 데이터베이스의 time_zone 테이블을 읽을 수 있는 권한을 부여하는 방법을 보여줍니다. MySQL 사용자비밀번호가 mypassy인 시스템 192.168.0.76의 myuser:
mysql.time_zone에 대한 GRANT SELECT TO [이메일 보호됨]'mypassy'로 식별됨;
새로운 어려움

모든 단계를 수행한 후에도 오류가 발생하는 경우(연결할 수 없습니다. MySQL 서버'귀하의 IP'(10061)), 이는 방화벽에 의해 연결이 차단되었음을 의미합니다( 윈도우 방화벽, 전초 기지, 바이러스 백신 또는 기타).

오류가 발생하면(클라이언트가 서버의 인증 프로토콜 요청을 지원하지 않습니다. MySQL 클라이언트 업그레이드를 고려하십시오.) 클라이언트(즉, 프로그램)가 서버에서 요구하는 프로토콜을 지원하지 않는 것입니다.
이 오류는 비밀번호를 이전 형식으로 설정하여 해결할 수 있습니다.
user@host에 대한 비밀번호 설정 = OLD_PASSWORD('password');

좋다 나쁘다

    이 문서에서는 관리자 비밀번호를 잊어버렸거나 실수로 루트 사용자 자체를 삭제한 경우 수행할 작업에 대해 설명합니다. 기사의 초점은 첫 번째입니다.

    동일한 시스템에서 실행되는 두 개의 mysql 서버에서 양방향 데이터베이스 복제를 구성해야 했습니다. 여기까지는 복잡하거나 특별한 것이 없는 것 같지만...



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: