docker中使用Mysql8+phpmyadmin

现在基本装这套都用docker了,有一些小坑在里面,简单说一下。

运行mysql比较简单,参考mysql⭐Docker Official Images,需要注意不要忘记暴露端口给phpmyadmin用。

$ docker run --name <mysql容器名> -e MYSQL_ROOT_PASSWORD=<root用户的密码> -d -P mysql:tag

直接在run时设置好密码,但是这时没法给phpmyadmin用的,必须改一下权限:

docker exec -it <mysql容器名> bash

进去后先登录mysql

mysql -p

输入密码之后就进入mysql控制台了,用8.0以上的方法来改变root授权使其可跨域访问:

grant all privileges on *.* to 'root'@'%' with grant option;

2020/1/8更新,上述跨域方法已不能用

目前grant是不能够修改用户的配置信息的,包括host等,仅能通过

grant all on *.* to 'root'@'localhost';

来修改权限。所以目前的方案,如果想远程,有下面两种:修改root账户或者创建新用户

-- 1. 使用alter user
alter user set user.host='%' where user.user='root';
-- 2. 使用create user
create user 'userName'@'%' identified by 'your_password';

PS: docker版本的bind已经是0.0.0.0了,如果是普通版本,默认是127.0.0.1,远程访问还需要修改/etc/mysql/mysql.conf.d/mysqld.cnf中的bind。

然后修改文件中

之后就可以愉快使用phpmyadmin了,官方提供的版本是phpmyadmin/phpmyadmin

运行的方法也给出了,除了HOST还要指定端口。

docker run --name <phpmyadmin容器名> -d -e PMA_HOST=<mysql的host或ip> -e PMA_HOST=<刚才的mysql的端口> -P phpmyadmin/phpmyadmin

之后就可以根据暴露的端口访问phpmyadmin服务了。

祝愉快。

原文地址:https://www.cnblogs.com/cielosun/p/10932703.html