alpine中安装mysql/mariadb的一个小坑 无法远程访问的问题

lxc容器运行的 alpine 里面单独装一个 mariadb。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
apk search mysql
apk search mariadb
# mariadb-server-utils-10.6.10-r0
apk add mariadb mariadb-client
rc-update add mariadb default
touch /run/openrc/softlevel
/etc/init.d/mariadb setup
rc-service mariadb start
mysql -u root -p

如果要装 mysql5.7 需要官网去下载 二进制。 或者 套docker

1
2
3
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.6.10-MariaDB MariaDB Server

查看具体版本 记住

1
2
# mysql -V
mysql  Ver 15.1 Distrib 10.6.10-MariaDB, for Linux (x86_64) using readline 5.1

修改本地用户密码

1
2
mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

打开远程访问

远程用户密码

1
2
3
4
5
mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';
mysql> use mysql;
mysql> SELECT host,user,password from user;
mysql> flush privileges;

配置文件

将 vi /etc/my.cnf.d/mariadb-server.cnf 中bind-address = XXXX 加# 注释掉 或者改为 bind-address = 0.0.0.0

小坑

此处有一个小坑,alpine的 mariadb默认skip-networking 就是不监听tcp,需要一起去掉注释

重启

1
rc-service mariadb restart

进阶

清理 localhost 的root用户。可选操作,不太建议

1
2
3
4
5
6
mysql -u root -p
mysql>  DROP USER 'root'@'localhost';
mysql> use mysql;
mysql> SELECT host,user,password from user;
mysql> flush privileges;
mysql> exit;

修改端口

1
2
vi /etc/my.cnf
# 在mysqlld节点下增加一行  port=端口号
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计