모든 호스트에서 MySQL 루트 액세스
리모트 Ubuntu 머신에 MySQL 서버를 설치했습니다.그root
사용자가 정의되어 있습니다.mysql.user
테이블:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
사용자와 접속할 수 있다root
같은 리모트 머신의 명령줄 인터페이스에서 표준으로mysql
고객.인터넷상의 모든 호스트로부터의 루트액세스를 허가하고 싶기 때문에, 다음의 행을 추가하려고 했습니다(이 행은 이전 덤프의 첫 번째 행과 완전히 중복됩니다만,host
열):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| % | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
단, 퍼스널 PC의 클라이언트는 계속 다음과 같이 말합니다(서버의 IP를 숨겼습니다).
SQL 오류 (2003) :'46.x.x.x'의 MySQL 서버에 연결할 수 없습니다(10061)
인증 오류인지 네트워크 오류인지 알 수 없습니다.서버 방화벽에서 0.0.0/0에 대해 포트 3306/TCP를 활성화했습니다.이것도 괜찮습니다.
업데이트:
코멘트에 기재된 바와 같이 MySql 8에서는 먼저 사용자를 명시적으로 작성해야 명령어가 다음과 같이 표시됩니다.
CREATE USER 'root'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
원답:
이 프로세스에는 두 가지 단계가 있습니다.
a) 권한을 부여합니다.root 사용자가 이 대체를 사용하여 실행할 때'password'
현재 루트 패스워드를 사용합니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
b) 모든 주소에 바인드:
가장 쉬운 방법은 자신의 행에 코멘트를 넣는 것입니다.my.cnf
파일:
#bind-address = 127.0.0.1
mysql을 재시작합니다.
service mysql restart
기본적으로는 localhost에만 바인드되지만 회선을 코멘트하면 검출된 모든 인터페이스에 바인드됩니다.행을 코멘트 아웃 하는 것은,bind-address=*
.
mysql 서비스가 바인드된 위치를 확인하려면 다음 절차를 수행합니다.
netstat -tupan | grep mysql
Ubuntu 16 업데이트:
컨피규레이션파일은 (지금)
/etc/mysql/mysql.conf.d/mysqld.cnf
(최소한 표준 Ubuntu 16의 경우)
다음 쿼리를 실행합니다.
use mysql;
update user set host='%' where host='localhost'
메모: 실가동용으로는 권장되지 않습니다.
MYSQL 8.0 - open mysql 명령줄 클라이언트
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql을 사용하다
UPDATE mysql.user SET host='%' WHERE user='root';
mysql 서비스 재시작
가끔씩
bind-address = 127.0.0.1
그래야 한다
bind-address =*
Raspbian에서 실행되고 있는 MariaDB - 바인드 주소를 포함하는 파일은 정확히 파악하기 어렵습니다.MariaDB는 이 주제에 대해 별로 도움이 되지 않는 정보를 가지고 있다.
나는 사용했다
# sudo grep -R bind-address /etc
어디 있는지 알아낼 수 있을 거야
또한 위의 모든 사람들이 지적한 것처럼 mysql에서 권한과 호스트를 설정해야 했습니다.
또, 라즈베리 파이에의 리모트 접속용의 3306 포토를 여는 즐거움도 있었습니다.드디어 iptables-persistent를 사용했습니다.
이제 모든 것이 잘 작동합니다.
AWS LightSail을 사용하고 있는데 인스턴스가 작동하려면 다음을 변경해야 합니다.
bind-address = 127.0.0.1
로.
bind-address = <Private IP Assigned by Amazon>
그 후 원격으로 연결할 수 있었습니다.
OS에 다수의 네트워크가 접속되어 있는 경우는, my.conf 파일의 bind-address내의 이 네트워크 중 하나를 지정할 필요가 있습니다.예:
[mysqld]
bind-address = 127.100.10.234
이 IP는 ethX 설정에서 취득한 것입니다.
제 경우, "bind-address" 설정이 문제였습니다.에서 이 합니다.my.cnf
mysql의 경우 어떤 이유로 기본값을 127.0.0.1로 설정했기 때문에 도움이 되지 않았습니다.
MySql이 현재 어떤 설정을 사용하고 있는지 확인하려면 로컬 상자에서 명령줄을 엽니다.
mysql -h localhost -u myname -pmypass mydb
현재 설정을 읽습니다.
Show variables where variable_name like "bind%"
모든 호스트로부터의 액세스를 허가하는 경우는, 0.0.0 이 표시됩니다. 않은 「」를 ./etc/mysql/my.cnf
mysqld ] bind - address 정 。
bind-address=0.0.0.0
마지막으로 MySql 서버를 재시작하여 새 설정을 선택합니다.
sudo service mysql restart
다시 시도하여 새 설정이 선택되었는지 확인하십시오.
「 」를 합니다.bind-address = 0.0.0.0
/etc/mysql/mysql.conf.d/mysqld.cnf
에서 mysql을 사용할 수 .root
IP를 사용하다
mysql-8.0에서 동작하는 명령어는 다음과 같습니다.다른 명령어는 오류로 인해 실패하였습니다.syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'abcd'' at line 1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
UPDATE mysql.user SET host='%' WHERE user='root';
mysql 클라이언트를 재시작합니다.
sudo service mysql restart
mysql_update
그게 네게 필요한 거야
MySql이 이미 이 작업을 수행할 수 있는 도구를 만들었는데 왜 이 문제를 해결하기 위해 더 복잡한 방법을 따르는지 모르겠습니다.
언급URL : https://stackoverflow.com/questions/11223235/mysql-root-access-from-all-hosts
'programing' 카테고리의 다른 글
C구조를 인라인으로 할당하려면 어떻게 해야 합니까? (0) | 2022.10.05 |
---|---|
Object.getOwnPropertyNames와 Object.열쇠들. (0) | 2022.10.05 |
마리아 표의 여러 열을 업데이트하는 방법DB (0) | 2022.10.05 |
tzlocal()을 사용하여 datetime을 MariaDB에 저장하는 방법 (0) | 2022.10.05 |
VueJS v-if = 어레이[인덱스]가 작동하지 않음 (0) | 2022.09.30 |