我正在尝试允许使用 mysql.connector 从特定机器连接到玛拉雅数据库服务器,在本地网络内。
理想情况下,我希望创建一个仅限于单个 IP 和 DB 的帐户。
为了简单起见,我尝试了以下通配符方法:
CREATE USER 'foo'@'%' IDENTIFIED BY 'foobar';
GRANT ALL PRIVILEGES ON *.* TO 'foo'@'%' WITH GRANT OPTION;
SELECT user,host FROM mysql.user WHERE user='foo';
+--------+-----------+
| user | host |
+--------+-----------+
| foo | % |
+--------+-----------+
使用这个基本的 Python 测试脚本:
import mysql.connector
class DBConnect:
def __init__(self):
config={
'user':'foo',
'password':'foobar',
'host':'192.168.x.xxx',
'port':3306,
'database':'foo',
'raise_on_warnings':True
}
self.__db=self.__connect(config)
def __connect(self,config):
try:
return mysql.connector.connect(**config)
except mysql.connector.Error as err:
print(str(err))
return False
db=DBConnect()
我收到以下错误:
1130: Host '192.168.x.xxx' is not allowed to connect to this MariaDB server
我读过更改绑定地址并遵循各种设置指南,例如MySQL 文档添加新用户,但我仍然无法成功连接。
可以在文件中找到 bind-address 50-server.cnf
。它设置为,127.0.0.1
但如果更改为,例如,0.0.0.0
服务器重启会失败:
systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start MariaDB 10.1.37 database server
skip-networking
不存在于任何配置文件中
将绑定地址设置为127.0.0.1
运行netstat -anp | grep 3306
后返回:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1790/mysqld
tcp 0 0 192.168.x.xxx:3306 0.0.0.0:* LISTEN 19490/mysqld
这使我相信数据库服务器确实正在监听 LAN 内的连接?
任何帮助深表感谢!
答案1
停止这两个mysqld
过程将允许50-server.cnf
修改文件。
然后可以成功重新启动 mysql 进程。现在将接受远程连接。
感谢 MichaelHampton