mysql 8.0 安装及问题记录

背景

家用 mac 电脑有点慢,主要是 docker & java 运行后,内存被使用了大部分。
以前本地的 mysql 服务都是通过 docker 创建的。

目的

本地搭建 mysql 服务,移除对docker的依赖(有其他需要才启动docker服务)

问题记录

  1. 远程连接不了
  2. netstat -an -p tcp | grep 3306 并不存在3306端口

经验分析

  1. 远程连接不了,但本地访问可以,推断 bind-ip 可能只允许本地连接
  2. 怀疑端口被设置出错了

查看 my.cnf 文件

mysql --verbose --help 

关键字眼

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

也就是启动的时候,会按照以上顺序优先读取前面的配置文件。
也可以在启动的时候指定其他目录文件。

我们的配置文件是放在这的 /usr/local/etc/my.cnf
查看 /usr/local/etc/my.cnf

[mysqld]
Only allow connections from localhost
bind-address = 127.0.0.1

将bind-address修改为0.0.0.0 使其允许任意ip连接

[mysqld]
bind-address = 0.0.0.0

查看端口

mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 0     |
+---------------+-------+
1 row in set (0.05 sec)

mysql> show variables like 'skip_networking';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | ON |
+-----------------+-------+
1 row in set (0.00 sec)
原来 skip_networking 开启的,所以通过客户端连接的都会提示超时。

注释掉 skip_networking

重启服务,通过命令进入 mysql 命令行

mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
1 row in set (0.01 sec)

通过 navicat premium 或者 sequeal 测试连接,连接上了,解决问题

其他正常操作

更改密码

mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '01010101';
Query OK, 0 rows affected (0.00 sec)

参考文章

  • Mac版Mysql8.0.11设置远程访问
  • 端口为0解决方案文章1
  • 端口为0解决方案文章2

你可能感兴趣的:(mysql 8.0 安装及问题记录)