원격 연결 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.cnf
IP 를 있습니다.
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.cnf
DB를 생성하려고 했을 때 회선을 이해하지 못했습니다.
검색 결과, 바인드 주소가 선언된 원래 장소를 알 수 있었습니다.
실제 선언은 에 있습니다./etc/mysql/mariadb.conf.d/50-server.cnf
그래서 거기서 직접 바인드 주소를 변경했더니 모두 동작하는 것 같습니다.
언급URL : https://stackoverflow.com/questions/15663001/remote-connections-mysql-ubuntu
'IT' 카테고리의 다른 글
Java에서 루프가 1개 이상 증가하도록 하는 방법 (0) | 2022.10.30 |
---|---|
Java 리플렉션을 사용하여 개인 정적 최종 필드 변경 (0) | 2022.10.29 |
for-of-loop 내부 ES6 어레이 요소 인덱스 액세스 (0) | 2022.10.29 |
설치된 판다 버전을 찾는 방법 (0) | 2022.10.29 |
Android - 비동기 태스크의 타임아웃 설정 (0) | 2022.10.29 |