解决Ubuntu远程连接mysql连不上的问题

解决Ubuntu远程连接mysql连不上的问题
Ubuntu安装了mysql之后想开启远程,但是远程怎么都登陆不上,老是提示错误,最终只用一个符号就搞定了,无语呀~~~

今天下午同事问我mysql数据库怎么连接,我当时比较忙,就直接给了个命令

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;


过了以后他说这个不行,还是连不上,问我是不是要重启mysql我说不用,然后想可能是因为权限没刷新吧,就给了个刷新权限的命令

flush privileges;


心想这次总可以了吧,过了一会QQ又响了,杯具的事情发生了.....

 

还是连不上,一直提示

 

Can't connect to MySQL server xxx.xxx.xxx.xxx (10061)


连不上?  怎么可能那,命令都没有问题呀,我赶快把手里的活搞定了,去看看.不看不知道一看吓一跳,我去  我竟然忘了他们研发那边用的都是Ubuntu的机子,唉  悲催呀....

以前用的都是redhat或者是centos的系统,根本没接触过Ubuntu的系统,更别说是上边的服务了.当时我还在想mysql不都一样嘛,那还怎么不可能不行那(还抱侥幸心理~~)

搞了半天依然没有结果,我去~~    这怎么搞那,还好我又绝招,有问题找"谷歌",不过我平时还是喜欢用"度娘",只有度娘不给力的时候我才用谷歌.

别说百度这次还真是给力,竟然搜到了.

果然是Ubuntu捣的鬼,竟然在mysql的配置文件中默认绑定了本机.  无奈呀~~~

果断给注释掉

编辑配置文件

/etc/mysql/my.cnf


注释掉里边的bind-address配置项

 

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

如果出现此情况:

修改该文件:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

OK,重启mysql

service mysql restart


Ubuntu重启mysql直接用mysql就可以,不用mysqld耶~~

 

连接试试吧  如果还有问题那可能和RP有关了,哈哈   玩笑话,有问题可以留言....

如果出现以下问题,修改用户权限,或者是端口3306未开通

 

 

前情提要:事先声明一下,这样做是对安全有好处的。刚初始化好的MySQL是不能进行远程登录的。要实现登录的话,强烈建议新建一个权限低一点的用户再进行远程登录。直接使用root用户远程登录有很大的风险。分分钟数据库就有可能被黑客drop掉。

      首先,修改/etc/mysql/my.cnf文件。把bind-address = 127.0.0.1这句给注释掉。解除地址绑定(或者是绑定一个你的固定地址。但宽带上网地址都是随机分配的,固定ip不可行)。

      然后,给一个用户授权使他能够远程登录。执行下面两句即可。

grant all PRIVILEGES on *.* to user1@'%'identified by '123456' WITH GRANT OPTION;
FLUSH  PRIVILEGES;
       最后重启一下mysql服务。service mysql restart。



--------------------- 



解决MySQL不能远程登录_用户创建与授权_grant all privileges on
MySQL的默认配置root帐户只能在本地登录。远程登录会出现如下提示:

1103 - host xxx.xxx.xxx.xx is not allowed to connec to this mysql server.

或

 1045 - Access denied for user 'root'@'10.163.225.155' (using password: YES).

原因是MySQL指定了某个账户只能在某个地方登录服务器;例如:root@192.168.1.155 表示账户 root 只能在IP地址为 19.168.1.155 的机器上登录MySQL服务器。

 

解决办法有两种:

1)修改root账户可在某地址登录(地址可以是IP地址、机器名、域名、%表示任何地址)来解决问题;在本地运行Command Line Client,已root身份登录执行命令:

mysql>use mysql;

mysql>update user set host='%' where user='root';

mysql>flush privileges; -- 刷新MySQL的系统权限相关表;

到这里已经完成了,如果还是登录不了的话就尝试重启下MySQL;

2)创建一个账户使其能远程登录;在本地运行Command Line Client,已root身份登录执行命令: 

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;

权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限部分被 all privileges 或者 all 代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

 

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。如果没有joe用户就会自动创建他。

mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。


--------------------- 


一般设置mysql用户权限我们可以在客户端中操作,很方便,不过有时候为了提升数据库安全,会限制远程给用户授权,这时候我们就需要登录到服务器上面设置用户权限。

例如在linux上配置用户权限,如下 
1,先登录,

mysql -uroot -p  
1
2,再设置 
MySQL赋予用户权限命令的简单格式可概括为: 
grant 权限 on 数据库对象 to 用户

grant select on dataterminaldb2.monitortemppersonevent to bigdata1@'%';
grant insert on dataterminaldb2.monitortemppersonevent to bigdata1@'%';
grant update on dataterminaldb2.monitortemppersonevent to bigdata1@'%';
grant delete on dataterminaldb2.monitortemppersonevent to bigdata1@'%';
1
2
3
4
或

grant select,insert,update,delete on dataterminaldb2.monitortemppersonevent to bigdata1@'%';
1
3,刷新权限,让权限生效

flush privileges;
1
4,检查配置结果 
查看当前用户(自己)权限:

show grants;
1
查看其他 MySQL 用户权限:

show grants for dba@localhost;
1
5,撤销权限 
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:

grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
1
2

--------------------- 


 

### 安装 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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值