首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要允许远程访问Unbuntu20.04Server上的MySQL,我需要做什么?

问要允许远程访问Unbuntu20.04Server上的MySQL,我需要做什么?
EN

Ask Ubuntu用户
提问于 2021-10-11 09:15:06
回答 1查看 2.8K关注 0票数 0

我有一个小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值+

EN

回答 1

Ask Ubuntu用户

发布于 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中运行得很好:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1368572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档