SHOW GRANTS
mysql 데이터베이스에서 수행 하면
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
내가 착각하지 않았다면 root@localhost
사용자 root
는에서만 서버에 액세스 할 수 있습니다 localhost
. root
동일한 네트워크에있는 다른 모든 컴퓨터에서이 mysql 서버에 액세스 할 수있는 권한 을 부여 하도록 MySQL에 어떻게 지시합니까?
답변
이는 다음의 모든 컴퓨터에서 동일한 비밀번호로 루트 액세스를 허용합니다 *.example.com
.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com'
IDENTIFIED BY 'some_characters'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
이름 확인이 작동하지 않으면 IP 또는 서브넷으로 액세스 권한을 부여 할 수도 있습니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
IDENTIFIED BY 'some_characters'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
답변
시험:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
답변
먼저 mysql을 확인한 다음 루트 사용자가 외부에서 액세스 할 수 있도록 몇 가지 단계를 수행해야합니다.
-
사용 안 함
skip-networking
에서my.cnf
(예 :/etc/mysql/my.cnf
) -
bind-address
in의 값을 확인하십시오.로my.cnf
설정되어 있으면 모든 IP 또는 연결하려는 모든 IP에서 액세스를 허용하도록127.0.0.1
변경할 수 있습니다0.0.0.0
. -
모든 IP에서 루트 사용자에게 원격 액세스 권한을 부여하십시오 (또는 대신 IP를 지정하십시오
%
).GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_root_password' WITH GRANT OPTION; FLUSH PRIVILEGES;`
-
mysql 서비스를 다시 시작합니다.
sudo service mysql restart
답변
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'YOUR_PASS'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
*.* = DB.TABLE
사용자를 특정 데이터베이스 및 특정 테이블로 제한 할 수 있습니다.
'root'@'%'
만든 사용자로 루트를 변경할 수 있으며 %는 모든 IP를 허용하는 것입니다. % .168.1.1 등을 변경하여 제한 할 수도 있습니다.
그래도 해결되지 않으면 my.cnf 또는 my.ini도 수정하고이 행을 주석 처리하십시오.
bind-address = 127.0.0.1
에 #bind-address = 127.0.0.1
및
skip-networking
에#skip-networking
- MySQL을 다시 시작하고 위의 단계를 다시 반복하십시오.
Raspberry Pi, 아래에서 bind-address 구성을 찾았습니다. \etc\mysql\mariadb.conf.d\50-server.cnf
답변
다른 사람들이 공유하는 SQL 권한은 작업을 수행합니다. 여전히 데이터베이스에 액세스 할 수없는 경우 포트에 대한 방화벽 제한이있을 수 있습니다. 연결을 여는 방법은 서버 유형 (및 그 사이의 라우터)에 따라 다릅니다. TCP 포트 3306 인바운드를 열고 외부 시스템에 대해 유사한 액세스 규칙을 제공합니다 (모두 / 서브넷 / 단일 IP / 등).
답변
/etc/mysql/mysql.conf.d/mysqld.cnf
파일을 열고 다음 줄에 주석을 추가합니다.
#bind-address = 127.0.0.1
답변
제 경우에는 cent OS에서 원격 mysql 서버에 연결하려고했습니다. 많은 솔루션 (모든 권한 부여, IP 바인딩 제거, 네트워킹 활성화)을 수행 한 후에도 문제가 여전히 해결되지 않았습니다.
결과적으로 다양한 솔루션을 조사하는 동안 iptables를 발견하여 mysql 포트 3306이 연결을 허용하지 않는다는 것을 깨달았습니다.
이 문제를 확인하고 해결 한 방법에 대한 작은 메모가 있습니다.
- 포트가 연결을 수락하는지 확인 :
텔넷 (mysql 서버 IP) [portNo]
-포트에서 연결을 허용하는 ip 테이블 규칙 추가 :
iptables -A INPUT -i eth0 -p tcp -m tcp -dport 3306 -j ACCEPT
-프로덕션 환경에서는 권장하지 않지만 iptables가 제대로 구성되지 않은 경우 규칙을 추가해도 문제가 해결되지 않을 수 있습니다. 이 경우 다음을 수행해야합니다.
서비스 iptables 중지
도움이 되었기를 바랍니다.
