IT

원격 연결 Mysql Ubuntu

itgroup 2022. 10. 29. 14:19
반응형

원격 연결 Mysql Ubuntu

어떤 이유로 MySQL 서버에 원격으로 연결할 수 없습니다.다 해봤는데 아직도 오류가 나요.

root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)

이제, 나는 뛰려고 해봤다.

 GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 

그리고 여전히 아무것도!내가 뭘 잘못하고 있지?

편집:my.cnfIP 를 있습니다.

MySQL을 localhost 이외의 것에 표시하려면 , 다음의 행이 필요합니다.

mysql 버전 5.6 이하인 경우

없음./etc/mysql/my.cnf 컴퓨터의 됩니다.

mysql 버전 5.7 이상의 경우

없음./etc/mysql/mysql.conf.d/mysqld.cnf 컴퓨터의 됩니다.

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

'아까다'를 붙입니다.bind-address = 0.0.0.0 를 는,

그런 다음 새로운 my.cnf 엔트리를 사용하여 MySQL을 중지하고 재시작합니다.실행이 완료되면 단말기에 접속하여 다음 명령을 입력합니다.

lsof -i -P | grep :3306

xxx의 실제 IP에서 이와 같은 결과가 반환됩니다.

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

위의 문장이 올바르게 반환되면 원격 사용자를 받아들일 수 있습니다.단, 리모트 사용자가 올바른 권한으로 접속하려면 localhost와 '%'에서와 같이 해당 사용자를 생성해야 합니다.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

그리고나서,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

그리고 마지막으로

FLUSH PRIVILEGES; 
EXIT;

위와 같은 사용자가 생성되지 않은 경우 로컬로 로그온할 때 기본 localhost 권한을 상속받아 액세스 문제가 발생할 수 있습니다.myuser가 가지고 있는 액세스를 제한하려면 GRANT 스테이트먼트 구문을 여기서 읽어야 합니다.이 모든 작업을 완료해도 문제가 해결되지 않으면 추가 오류 출력과 my.cnf 적절한 행을 게시해야 합니다.

메모: lsof가 반환되지 않거나 발견되지 않으면 Linux 배포판을 기반으로 여기에 설치할 수 있습니다.동작시키기 위해 lsof가 필요한 것은 아니지만, 기대했던 대로 동작하지 않을 때는 매우 편리합니다.

: [ ]를 해도 : [ ] / [ ]가 .bind-address…에my.cnf동작하지 않는 경우는, 최초로 선언된 장소에서 변경을 실시합니다.

/etc/mysql/mariadb.conf.d/50-server.cnf

유인원의 우수한 게시물 위에 몇 가지 포인트를 추가합니다.

1) 다음 명령어를 사용하여 ip address mysql 서버가 수신 중인지 확인할 수 있습니다.

netstat -nlt | grep 3306

sample result:

tcp 0  0  xxx.xxx.xxx.xxx:3306  0.0.0.0:*   LISTEN

사용2) ★★FLUSH PRIVILEGES이 즉시 경우 을 로드합니다.

GRANT ALL ON *.* TO 'user'@'localhost' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
FLUSH PRIVILEGES; 
EXIT;

ex == mysql ex.root 입니다.
passwd == mysql 접속에 사용하는 패스워드

3) netfilter firewall이 유효한 경우)sudo ufw enable) mysql 서버 머신에서 다음 절차를 수행하여 리모트액세스용 포트 3306을 엽니다.

sudo ufw allow 3306

를 사용하여 상태 확인

sudo ufw status

4) 리모트 접속이 확립되면 명령어를 사용하여 클라이언트 또는 서버 머신에서 검증할 수 있습니다.

netstat -an | grep 3306
netstat -an | grep -i established

MySQL은 localhost만을 리슨합니다.리모트 액세스를 유효하게 하려면 my.cnf 파일을 변경해야 합니다.

sudo nano /etc/mysql/my.cnf

bind-address 행과 skip-external-locking 행을 코멘트 아웃해야 합니다.

#bind-address = 127.0.0.1
# skip-external-locking

다음 변경 후 mysql 서비스를 재시작해야 합니다.

sudo service mysql restart

ubuntu 12(오래된 것)를 사용하고 있습니다.

먼저 /etc/mysql/mysql.conf.d/mysql.cnf 파일(Ubuntu 14.04 이전 버전에서는 /etc/mysql/my.cnf)을 엽니다.

[ mysqld ]아래에서 bind-address = 127.0.0.1 및 이를 bind-address = 0.0.0으로 변경하거나 주석을 달 수 있습니다.

그런 다음 Ubuntu MysQL 서버를 재시작합니다.systemctl restart mysql.service

이제 Ubuntu Server는 MySQL Server에 대한 원격 액세스를 허용하지만 MySQL 사용자가 모든 호스트에서 액세스할 수 있도록 구성해야 합니다.

사용자는 다음 사용자여야 합니다.'username'@'%'필요한 보조금을 모두 받고

MySQL 서버가 모든 인터페이스에서 수신하는지 확인하려면 다음과 같이 netstat 명령을 실행합니다.

netstat -tulnp | grep mysql

이게 효과가 있기를!

Windows 로 테스트하는 경우는, 포토 3306 을 여는 것을 잊지 말아 주세요.

내 경우 MySql Server 버전 8.0.22를 사용하고 있었습니다.

덧붙여야만 했다

bind-address        = 0.0.0.0

그리고 이 라인을 변경해서

mysqlx-bind-address = 0.0.0.0

/etc/syslog/syslog.conf.d에 있는 파일

를 실행하여 MySQL을 재시작합니다.

sudo service mysql restart

Mysql을 리모트 서버에 연결하려고 할 때도 같은 문제가 있었습니다.저는 bind-address를 DB 서버의 현재 개인 IP 주소로 변경해야 한다는 것을 알았습니다.하지만 제가 이 모든 걸 넣으려고 했을 때bind-address =0.0.0.0줄을 서다my.cnfDB를 생성하려고 했을 때 회선을 이해하지 못했습니다.

검색 결과, 바인드 주소가 선언된 원래 장소를 알 수 있었습니다.

실제 선언은 에 있습니다./etc/mysql/mariadb.conf.d/50-server.cnf

그래서 거기서 직접 바인드 주소를 변경했더니 모두 동작하는 것 같습니다.

언급URL : https://stackoverflow.com/questions/15663001/remote-connections-mysql-ubuntu

반응형