我有一个小Python脚本来收集学生的家庭作业和在线课堂作业的分数,从表allstudentsAnswers20BE。
这在我以前共享的网页上非常有用。
在新的Ubuntu20.04云服务器上,我被拒绝了连接。我没有运行云服务器的经验。
我允许飞碟中的33060和3306端口
我的ip在家是不固定的。
当我运行Python脚本时,当我试图连接到云服务器时,我会得到这个错误
pymysql.err.OperationalError:(1130,"183.206.16.30‘不允许连接到此MySQL服务器“)
netstat说mysqld正在监听33060和3306,所以我允许两者都进入防火墙ufw。
通过ssh连接到云服务器,我运行了:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
我将绑定-地址更改为0.0.0.0 (我也尝试了*)
我重新启动mysql: systemctl重新启动mysql
There必须是服务器端需要设置的东西。
请给我点建议吧,我真的需要这个才行。
我还得到了这个信息(假设我的云ip是123.456.789.123):
pedro@ebs-105422:~$ nc -v -w 2 123.456.789.123 3306连接到123.456.789.123 3306端口成功!pedro@ebs-105422:~$
这是否意味着mysqld正在收听3530??或者这就是我的PID?
pedro@ebs-105422:~$ sudo netstat -tap _ grep mysqld 0 0.0.0.0:*聆听3530/mysqld tcp6 0 :33060 :*聆听3530/mysqld pedro@ebs-105422:~$
下面是服务器上的mysql,确认端口3306
mysql>显示variable_name ('hostname',‘port’)中的变量;+- Variable_name值+
发布于 2021-10-11 14:07:39
我想出来了,这个答案只是为了帮助那些可能有同样问题的人。这种方式可能不是那么安全,有3306打开,但a)我只有作业b)你仍然需要用户名和密码。
当您在mysql上创建一个用户时,它看起来如下所示,当您通过服务器上的ssh执行此操作时也是这样:
创建由‘密码’标识的用户'peter'@'localhost';将some_db.*上的所有特权授予'peter'@'localhost‘;
如果您想要远程访问,则需要更改用户数据(或创建一个新用户):
将用户“peter”@“localhost”重命名为“peter”@‘%’;
%显然代表任何ip
然后在服务器上的也通过ssh:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
找出有
绑定地址= 127.0.0.1
将此更改为
绑定-地址= 0.0.0.0
ctrl X退出nano nano询问是否要保存,按y,然后输入以保存与打开/etc/mysql/mysql.conf/mysqld.cnf相同的位置。
然后(在服务器上):
sudo systemctl重新启动mysql
在那之后,我的Python在Idle shell中运行得很好:
def mysqlRemoteAttn(clas):
# To connect remote MySQL database
conn = pymysql.connect(
host='123.456.789.123',
port=3306,
user='myusername',
password = 'mypassword',
db='allstudentsdb',
)
cur = conn.cursor()
sql = f"SELECT studentnr, attn_this_week FROM allstudents{clas}"
cur.execute(sql)
output = cur.fetchall()
# To close the connection
conn.close()
return output
# get the attendance from the webpage MySQL
results = mysqlRemoteAttn(clas)https://askubuntu.com/questions/1368572
复制相似问题