Mysql MariaDB가 원격 연결에서 작동하지 않습니다.
하루 동안 머리를 긁적이며 아마도 너무 많은 기사를 읽었을 것이고 MariaDB가 원격 연결을 들을 수 있도록 하려면 어떻게 해야 할까요?유감스럽게도 아래 오류가 발생했습니다.
Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MariaDB server.
또한 이 StackOverflow 질문, 또 다른 질문을 읽었고 MySQL 쿼리를 사용하여 새 사용자를 생성하고 모든 권한을 부여할 수 있었습니다.
CREATE USER 'ahsensaeed'@'%' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON *.* TO 'ahsensaeed'@'%' WITH GRANT OPTION;
그리고 아래는 저의 ansheeed 사용자 허가서입니다.
MariaDB [mysql]> show grants for 'ahsensaeed'@'%';
+--------------------------------------------------------------------------------------------------------------------------------------+
| Grants for ahsensaeed@% |
+--------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'ahsensaeed'@'%' IDENTIFIED BY PASSWORD '*F794ABE2A12665587C6B6D8B61E2F7E987711AFA' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
마지막에는 권한만 플러시하고 그 후에는 MariaDB 구성 파일로 이동하여 편집합니다.아래는 나의 MariaDB conf 파일이 놓여진 경로입니다.
/etc/mysql/mariadb.conf.d/50-server.cnf
다음은 나의 MariaDB 파일 블록을 보여줍니다.
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
.....
.....
그런 다음 /etc/init.d/mysql restart를 통해 mysql 서비스를 다시 시작합니다.나는 또한 mysql을 위해 클라이언트의 3306 포트를 엽니다.
위의 솔루션이 작동하지 않을 때 bind-address = 0.0.0을 /etc/ mysql/conf.d/ mysql.cnf 파일에 추가하지만 오류로 실패했습니다.
서버에서 MariaDB 데이터베이스를 요청하는 방법은 다음과 같습니다.
-> mysql -uahsensaeed -p -h hostIp
그리고 저는 아래의 오류를 받았습니다.
오류 1130(HY000):호스트 'hostIp'은(는) 이 MariaDB 서버에 연결할 수 없습니다.
편집 호스트 및 사용자 데이터를 추가했습니다.
MariaDB [(none)]> select User,Host from mysql.user;
+------------+-----------+
| User | Host |
+------------+-----------+
| ahsensaeed | % |
| root | localhost |
+------------+-----------+
2 rows in set (0.00 sec)
어떤 도움이라도 주시면 감사하겠습니다.
이것은 저에게 효과가 있었습니다(Ubuntu 18.04를 가상 머신으로 사용하고 있고 Windows 10을 Vagrant와 함께 사용하고 있습니다).
sudo mysql -e "CREATE DATABASE {db_name};"
sudo mysql -e "CREATE USER {user_name}@localhost IDENTIFIED BY '{password}';"
sudo mysql -e "UPDATE mysql.user SET Host='%' WHERE User='{user_name}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON {db_name}.* TO '{user_name}'@'%';"
sudo mysql -e "FLUSH PRIVILEGES;"
sudo systemctl restart apache2
sudo systemctl restart mariadb
그런 다음 파일을 편집해야 합니다.
/etc/mysql/mariadb.conf.d/50-server.cnf
호스트에 bind-address 속성 설정IP 주소 또는 이 줄에 댓글을 달기만 하면 됩니다.
마지막으로 명령을 실행합니다.
sudo systemctl restart apache2
sudo systemctl restart mariadb
이것이 당신의 요구에 적합하기를 바랍니다.
언급URL : https://stackoverflow.com/questions/54706507/mysql-mariadb-is-not-working-with-remote-connections
'programing' 카테고리의 다른 글
도커 파일에서 스크립트 실행 (0) | 2023.10.14 |
---|---|
제약 조건이 존재하는지 확인하는 SQL for Oracle (0) | 2023.10.14 |
mysql, alter column remove primary key and auto increment (0) | 2023.10.14 |
Python & MySql: 유니코드 및 인코딩 (0) | 2023.10.14 |
문서에 대한 요소의 위치 찾기 (0) | 2023.10.14 |