一直怀疑是权限的问题,然后上网一查,说是ubuntu出来了一个叫做apparmor的东西,需要修改相关配置;
可以直接使用docker拉起mysql
root@yong:~# mkdir -p /data/mysql/conf
root@yong:~# mkdir -p /data/mysql/logs
root@yong:~# mkdir -p /data/mysql/data
root@yong:~# nerdctl run \
> -p 12345:3306 \
> --name mysql \
> -v /data/mysql/conf:/etc/mysql/conf.d \
> -v /data/mysql/logs:/logs \
> -v /data/mysql/data:/var/lib/mysql \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -d mysql:8.0.30 --default-authentication-plugin=mysql_native_password
containerd使用的是iptables做转发
所以,可以在iptables的规则中看到监听的端口:
root@yong:~# iptables -t nat -nvL |grep 12345
0 0 CNI-HOSTPORT-SETMARK tcp -- * * 10.4.0.0/24 0.0.0.0/0 tcp dpt:12345
6 360 CNI-HOSTPORT-SETMARK tcp -- * * 127.0.0.1 0.0.0.0/0 tcp dpt:12345
6 360 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 to:10.4.0.23:3306
6 360 CNI-DN-d27383cdf2e36edb47788 tcp -- * * 0.0.0.0/0 0.0.0.0/0 /* dnat name: "bridge" id: "default-9653ed1f0d70495de2515df8c03ad1c09c3b68fc9d34809b5d9eae899cef84ad" */ multiport dports 12345