[mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1如果我想让我本地docker里的服务也访问mysql要怎么配置,可以指定docker的ip加上吗
时间: 2023-12-06 09:02:44 浏览: 157
是的,你可以将 `bind-address` 参数设置为你的 Docker 容器的 IP 地址加上 MySQL 的默认端口号(3306)。假设你的 Docker 容器的 IP 地址为 172.17.0.2,那么你可以将 `bind-address` 的值改为 `172.17.0.2:3306`,然后重新启动 MySQL 服务即可。
修改后的配置文件如下:
```
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Listen on localhost and Docker container's IP address
bind-address = 127.0.0.1, 172.17.0.2:3306
```
修改完配置文件后,需要重新启动 MySQL 服务使得配置生效。
相关问题
[mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1如果我想让我本地docker里的服务也访问mysql要怎么配置
你需要将 `bind-address` 参数设置为 `0.0.0.0`,这样 MySQL 将会监听所有可用的网络接口,而不仅仅是 `localhost`。在你的配置文件中,将 `bind-address` 的值改为 `0.0.0.0`,然后重新启动 MySQL 服务即可。
修改后的配置文件如下:
```
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
# Listen on all available network interfaces
bind-address = 0.0.0.0
```
修改完配置文件后,需要重新启动 MySQL 服务使得配置生效。
● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: deactivating (stop-sigterm) (Result: exit-code) Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 5121 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE) Process: 5104 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) CGroup: /system.slice/mysqld.service └─5124 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
根据提供的信息,mysqld.service 进程正在停止中,并且退出代码为 1/FAILURE。这可能是由于 MySQL 服务器配置或其他问题导致的。建议您执行以下步骤进行故障排除:
1. 运行 `journalctl -xe` 命令,以查看更多关于 mysqld.service 失败的日志信息。
2. 检查 MySQL 配置文件(通常位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`)中的设置是否正确。特别关注数据库路径、权限和端口等设置。
3. 检查是否有其他进程或服务正在占用 MySQL 使用的端口。可以使用 `netstat -tuln | grep 3306` 命令检查 MySQL 默认端口(3306)是否被占用。
4. 检查 MySQL 数据目录(通常位于 `/var/lib/mysql`)的权限和所有者设置是否正确。
5. 尝试手动启动 MySQL 服务器,使用 `sudo systemctl start mysqld.service` 命令,并观察是否有任何错误或警告信息输出。
如果问题仍然存在,请提供更多详细信息,以便能够更好地帮助您解决问题。
阅读全文