允许远程访问MySQL服务器(Windows | PyMySQL)

时间:2018-06-22 02:16:06

标签: mysql python-3.x server mysql-workbench pymysql

我正在创建一个python tkinter应用程序,它将在一个wifi网络上的所有不同计算机上运行。这些计算机应通过tkinter应用程序与Windows计算机托管的数据库服务器同时通信。我选择了MySQL和PyMySQL来完成这些任务。我有tkinter的经验,但是MySQL和网络在很大程度上对我来说是陌生的。

我已经下载并配置了所有相关的MySQL软件(服务器,路由器,工作台等),并使用单个表comptool创建了一个名为competitors的数据库。服务器在localhost和端口3306上运行。tkinter应用程序可以从主机上与数据库进行交互。在任何其他计算机上,尝试连接时收到以下错误:

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([WinError 10061] No connection could be made because the target machine actively refused it)")

通过一些搜索,我发现许多答案描述了MySQLInstanceConfig.exe文件或bind-address文件中的my.cnf值。 MySQLInstanceConfig.exe文件似乎在MySQL 8.0中不存在,我无法在Windows中的任何地方找到my.cnf文件(我怀疑这可能是Linux专有的)。

也有很多提到对相关数据库用户的特定特权授予,但是我通过My​​SQL命令行进行的所有特权授予尝试都返回了语法错误。我使用以下行(及其变体):

GRANT ALL ON comptool.* TO 'testuser'@'%' IDENTIFIED BY 'pass';

但是我总是收到相同的错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'pass'' at line 1

除了任何直接帮助之外,我还很好奇为什么在工作台中没有一个可以单击以允许远程访问的简单复选框。

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试

If the columns have null values ignore the values and concatenate other strings

然后

GRANT ALL PRIVILEGES ON database_name.* TO 'testuser'@'localhost' IDENTIFIED BY 'pass';