开发者

云服务器安装mysql后如何设置示例详解

开发者 https://www.devze.com 2025-10-10 09:14 出处:网络 作者: Blank_Coder
目录问题1:没有找到mysql生成的临时密码问题2:MySQL8.0默认监听IPv6地址,如何设置同时监听IPv4总结 问题1:没有找到MySQL生成的临时密码
目录
  • 问题1:没有找到mysql生成的临时密码
  • 问题2:MySQL8.0默认监听IPv6地址,如何设置同时监听IPv4
  • 总结 

问题1:没有找到MySQL生成的临时密码

通常在云服务器(linux)上安装完MySQL后,root密码为空或者生成一个临时密码,可以通过以下方式查看(这里以MySQL8.0为例)

sudo grep 'temporary password' /var/log/mysqld.log

然后使用临时密码登录

mysql -u root -p

再修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';

最后刷新权限

FLUSH PRIVILEGES;

但是,如果没有找到临时密码怎么办?(这也是我遇到的问题)

按照以下步骤来:

  1. 首先停止mysql服务
sudo systemctl stop mysqld
  1. 然后跳过权限表验证,这会允许无密码登录
sudo mysqld_safe --skip-grant-tables --skip-networking &
  1. 无密码登录并修改密码
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码';
  1. 退出并重新启动MySQL
sudo systemctl restart mysqld

这里如果MySQL没有关闭干净的话跳过权限表会报错:

mysqld_safe A mysqld process already exists

按照以下步骤完全关闭MySQL服务:

  • 确认并杀掉所有 MySQL 进程
sudo systemctl stop mysqld  javascript      # 正常关闭服务
sudo pkill -f mysqld              # 强制杀掉残留进程
  • 如果提示 pkill 未找到,用:
sudo killall mysqld
  • 再次确认没有mysqld进程
ps aux | grep mysqld | grep -v grep
  • 然后重新用跳过权限模式启动
sudo mysqld_safe --skip-grant-tables --skip-networking &

问题2:MySQL8.0默认监听IPv6地址,如何设置同时监听IPv4

此时典型的报错如下:

Error: connect ECONNREFUSED ::1:3306

at createConnectionError (node:net:1678:14)

at afterConnectMultiple (node:net:1708:16) {

errno: -111,

code: ‘ECONNREFUSED’,

syscall: ‘connect’,

address: ‘::1’,

port: 3306

这里我是用的nodeandroid.js连接,意思就是:“我尝试连接本机的 MySQL(端口 3306),但连接被拒绝了。”

这是因为MySQL默认监听IPv6地址,但是我们的项目端口是IPv4地址

首先可以确认一下:

sudo netstat -tulnp | grep 3306

如果netstat 只看到一个 :::3306(或 tcp6 0 0 :::3306 :: LISTEN),那确实说明 MySQL 只监听了 IPv6 通配地址 ::,而没有监听 IPv4 的 127.0.0.1 —— Node.js 会先解析 localhost 为 ::1,再尝试 127.0.0.1,两者都被拒绝,于是抛出 ECONNREFUSED

  1. 首先修改配置文件
sudo vi /etc/my.cnf        # 或对应路径

找到 bind-address 这一行,改成:

# 同时监听 IPv4 和 IPv6
bind-addphpress = ::

如果这行被注释掉或压根没有,直接添加上去即可。

不要写成 bind-address = 127.0.0.1,否则只监听 IPv4;也不要写 ::1,否则只监听 IPv6。

  1. 重启MySjavascriptQL
sudo systemctl restart mysqld   # Centos/RHEL
# 或
sudo systemctl restart mysql    # Ubuntu/Debian
  1. 再次确认监听地址
sudo netstat -tulnp | grep 3306

应看到两行(或一行):

tjavascriptcp6 0 0 :::3306 ::: * LISTEN 265229/mysqld

tcp6 0 0 :::33060 ::: * LISTEN 265229/mysqld

:::3306 表示 IPv4 与 IPv6 通配地址都被监听(Linux 在 IPv6 通配模式下会自动兼容 IPv4)。

总结 

到此这篇关于云服务器安装mysql后如何设置的文章就介绍到这了,更多相关云服务器安装mysql后设置内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号