m1 直接docker pull mysql 报:
MacBook-Pro ~ % docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
Docker Hub上没有适用于arm64架构的mysql镜像。
M1芯片是arm64架构,也称作aarch64架构,只能运行arm64/aarch64架构的程序。
使用:docker pull mysql/mysql-server:latest
创建并启动MySQL服务容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server
这时使用宿主机连接没有授权访问,需要进入mysql修改mysql访问权限。
docker exec -it mysql bash
bash-4.2# mysql -u root -p
123456
授权
mysql>CREATE USER ‘root’@’%’ IDENTIFIED BY ‘root’;
mysql>GRANT ALL ON . TO ‘root’@’%’;
刷新权限
mysql> flush privileges;
修改root用户密码
mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
刷新权限
mysql> flush privileges;
出现:报错Access denied for user ‘root’@‘172.17.0.1’ (using password: NO)
原因:对于熟悉mysql的人,这个错误应该很容易定位。从MySQL8.0 开始,默认的验证方式是 caching_sha2_password(参见 MySQL 8.0.4 : New Default Authentication Plugin : caching_sha2_password)。
解决办法:将验证方式修改为“mysql_native_password”
USE mysql;
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘’;
FLUSH PRIVILEGES;