远程连接虚拟机中的mysql报错

解决虚拟机MySQL访问问题
本文介绍了如何解决从本地访问虚拟机中MySQL的问题。通过修改mysql.conf.d配置文件中的bind-address参数,使得虚拟机内的MySQL可以接收外部连接。

在本地访问虚拟机中的mysql,一直报错。网上查了很可能是虚拟机mysql中设置的bind-address地址是127.0.0.1;导致只监听了虚拟机的连接。但无奈搜索所有的my.cnf都找不到此配置,但是发现my.cnf有以下两句话。

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

故抱着一种试着的态度去打开这两个文件,终于在mysql.conf.d文件中发现了这行配置。并将其注释。于是顺利从本机访问到了虚拟机的mysql。

### Linux 虚拟机 MySQL 登录错误 28000 的解决方案 #### 错误原因解析 错误 `28000` 通常表示访问数据库时认证失败。这可能是由于用户的密码过期、用户不存在或是客户端尝试通过不支持的身份验证插件进行身份验证等原因造成的[^1]。 #### 修改用户身份验证方式 如果是因为身份验证插件问题,则可以通过更改用户的身份验证方式来解决问题。对于使用较新版本的 MySQL,默认情况下可能会设置为更安全但也可能不太兼容某些旧版客户端的身份验证插件(如 `caching_sha2_password`)。此时可以考虑将特定账户的身份验证机制改为更为通用的形式: ```sql ALTER USER 'your_username'@'host_or_ip_address' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; ``` 上述命令中的 `'your_username'`, `'host_or_ip_address'` 和 `'new_password'` 需要替换为实际使用的用户名、主机名/IP地址以及新的密码[^4]。 #### 设置或重置 root 用户密码 另外一种常见的情况是忘记了管理员(root)账号的密码或者是其默认配置不允许远程连接。这时应该先确保能够本地登录到 MySQL 并修改 root 密码: 1. **停止 MySQL 服务** 使用如下命令停止正在运行的服务: ```bash sudo systemctl stop mysqld.service ``` 2. **跳过权限表启动 MySQL** 接下来以跳过授权表的方式重启 MySQL,这样可以直接进入而无需提供任何凭证: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. **更新 root 用户密码** 进入 MySQL 控制台后执行下面语句来改变 root 用户的密码: ```sql USE mysql; UPDATE user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'; FLUSH PRIVILEGES; EXIT; ``` 4. **恢复正常模式下的 MySQL 启动** 完成以上操作之后记得重新按照常规流程开启 MySQL 服务,并测试能否正常使用新设臵好的密码成功登陆[^3]。 #### 检查网络连接情况 除了服务器端自身的设定外,还需确认客户端与目标机器之间的网络状况良好,防火墙规则允许必要的通信端口(比如默认用于 MySQL 数据库通讯的 3306),并且 IP 地址稳定不变。针对后者提到的问题即虚拟机IP变动频繁这一点,建议采用静态分配的方法固定住该设备在网络内的位置,从而减少因为动态获取而导致的变化带来的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值