背景
家用 mac 电脑有点慢,主要是 docker & java 运行后,内存被使用了大部分。
以前本地的 mysql 服务都是通过 docker 创建的。
目的
本地搭建 mysql 服务,移除对docker的依赖(有其他需要才启动docker服务)
问题记录
- 远程连接不了
- netstat -an -p tcp | grep 3306 并不存在3306端口
经验分析
- 远程连接不了,但本地访问可以,推断 bind-ip 可能只允许本地连接
- 怀疑端口被设置出错了
查看 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)
网友评论