Ubuntu下允许远程连接MySQL数据库

本文介绍如何解决使用Navicat远程连接阿里云服务器上Ubuntu系统的MySQL数据库时遇到的问题,包括配置my.cnf文件、调整MySQL服务权限等步骤。

前几天把自己的网站搭建起来之后,调试的时候,直接的Ubuntu的命令行中,对数据库进行了修改。

后来觉得太不方便了,所以就打算使用本机的可视化界面操作数据库,没想到发生了一些问题。

为了帮助其他的同学我把问题和解决方案放在这里。

系统:阿里云服务器(Ubuntu系统)

软件:Navicat

首先下载和安装Navicat,然后点击链接,建立新的链接。配置链接信息。

问题:当我测试连接的时候出现了,如下图得问题。

解决方案:允许ubuntu下mysql远程连接 。假设用户为root,密码为root,数据库为wsyw126

具体过程如下:

1、在目标服务器上(121.42.186.99),修改mysql的my.cnf文件:

vim /etc/mysql/my.cnf

2、注释掉bind-address,屏蔽其只对本地监听,添加#号

#bind-address        = 127.0.0.1

3、启动MySQL服务,使其修改的配置生效

sudo restart mysql

配置完了服务器的数据访问权限,此时还是不能远程访问MySQL数据库

这是因为现在还没有对服务器上的数据库或表赋予访问权限(GRANT)

4、在服务器上,登录MySQL数据库

mysql -uroot -proot

5、对数据库wsyw126赋予权限

grant all privileges on wsyw126.* to root@"%" identified by 'root';

flush privileges;

解释:

授权用户能进行远程连接

grant all privileges on *.* to root@"%" identified by "password" with grant option;

flush privileges;

第一行命令解释如下,*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户。root:授予root账号。“%”:表示授权的用户IP可以指定,这里代表任意的IP地址都能访问MySQL数据库。“password”:分配账号对应的密码,这里密码自己替换成你的mysql root帐号密码。

第二行命令是刷新权限信息,也即是让我们所作的设置马上生效。

6、现在可以远程访问服务器上的MySQL,链接界面如下:
(使用命令行链接:mysql -h121.42.186.99 -uroot -proot)


这个问题的其他答案,可以参考2003 - Can't connect to MySQL server on 'localhost' (10038)


其他命令

授权信息在数据库:mysql中。

use mysql

1、在服务器上删除用户对数据库的访问权限:

revoke all privileges on wsyw126.* from root@121.42.186.99 identified by 'root';

2、在服务器上删除用户root:

delete from user where user='root';

3、在修改生效:

flush privileges;


备注
转载请注明出处:http://blog.youkuaiyun.com/wsyw126/article/details/51637057
作者:WSYW126

### 安装 MySQL 并配置远程连接 #### 准备工作 为了确保安全性和功能性,在Ubuntu上安装MySQL并设置其支持远程访问,需遵循一系列特定的操作流程。 #### 安装 MySQL Server 通过终端执行命令来更新包列表以及安装最新版本的MySQL服务器: ```bash sudo apt update && sudo apt install mysql-server ``` 完成上述操作后,启动MySQL服务并且将其设置为开机自启[^1]。 #### 配置 MySQL 远程访问权限 编辑`/etc/mysql/mysql.conf.d/mysqld.cnf`文件中的绑定地址部分,将bind-address修改为0.0.0.0或者具体的IP地址以便接受来自任何地方的数据请求。这一步骤至关重要因为默认情况下MySQL仅监听本地回环接口上的连接尝试[^2]。 #### 创建具有远程访问权限的新用户 登录到MySQL控制台之后创建一个新的数据库账户赋予相应的权限给该账号用于从外部网络位置进行管理活动: ```sql CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%'; FLUSH PRIVILEGES; ``` 以上SQL语句定义了一个名为`newuser`的新用户,并授予此用户全局范围内的全部特权;请注意替换实际使用的用户名和密码字符串。 #### 开放防火墙端口 为了让外界能够触及到运行于内部的服务程序,则需要开放必要的通信端口号,默认情况下MySQL使用的是3306号TCP端口。对于基于UFW(Uncomplicated Firewall)防护机制下的Linux发行版而言,可以利用如下指令开启指定端口: ```bash sudo ufw allow 3306/tcp ``` 最后重启MySQL服务使更改生效: ```bash sudo systemctl restart mysql.service ``` 此时已经完成了基本的MySQL远程接入准备工作,但是建议进一步加强安全性措施比如采用SSL加密传输通道等方法提高系统的整体防御能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值