ubuntu上的mysql远程连不上root

一、远程连不上

1. 先确认 MySQL 服务的监听配置

这是最常见的远程连接失败原因,MySQL 默认只监听本地 127.0.0.1,不对外网开放。

查看当前绑定的 IP

sql 复制代码
SHOW GLOBAL VARIABLES LIKE 'bind_address';
  • 如果结果是 127.0.0.1 → 只允许本地连接,需要修改。
  • 如果结果是 0.0.0.0 → 已经允许所有 IP 访问,跳过这一步。

2.先定位到 Ubuntu 上正确的配置文件

在 Ubuntu 中,MySQL 的主配置文件通常是:

bash 复制代码
/etc/mysql/mysql.conf.d/mysqld.cnf

修改 bind-address

在 [mysqld] 部分,找到这一行:

bash 复制代码
bind-address = 127.0.0.1

改成

bash 复制代码
bind-address = 0.0.0.0

3、重启mysql

bash 复制代码
sudo systemctl restart mysql

二、root连不上

先查询权限配置

sql 复制代码
#执行以下SQL查询root账号的所有权限配置
SELECT user, host, authentication_string, plugin FROM mysql.user WHERE user = 'root';

如果没有root&'%'

先显式创建用户,再执行授权

需要分两步操作,先创建 root'@'% 用户(可设置密码),再给该用户授予权限,步骤如下:

步骤 1:先创建 'root'@'%' 用户(必做)

执行创建语句(替换 你的密码 为实际要设置的 root 远程密码,也可留空但不推荐):

sql 复制代码
-- MySQL 5.7 及以下版本(password()函数可用)
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';

-- MySQL 8.0 及以上版本(推荐,password()函数已废弃)
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';

步骤 2:再执行你的授权语句(此时用户已存在,不会报错)

sql 复制代码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

步骤 3:刷新权限(使授权立即生效,必做)

sql 复制代码
FLUSH PRIVILEGES;
相关推荐
常常有6 分钟前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
不仙52031 分钟前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
dapeng-大鹏1 小时前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
海市公约1 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理
颂love2 小时前
MySQL的执行流程
android·数据库·mysql
海市公约2 小时前
一条SQL查询的完整旅程:MySQL执行流程深度解析
sql·mysql·数据库优化·执行计划·连接器·查询缓存·sql执行原理
沪漂阿龙4 小时前
MySQL 面试题爆款详解:InnoDB 页机制、B+树索引、Buffer Pool、Redo Log、页分裂与性能优化一次讲透
b树·mysql·性能优化
思麟呀6 小时前
MySQL的事物管理
数据库·mysql
weixin_449290016 小时前
Docker + MySQL 在 Windows 11 上的本地安装部署文档
mysql·docker·容器
小小菜鸟,可笑可笑6 小时前
Ubuntu 系统安装搜狗输入法 & 使用英文标点
ubuntu