Docker安装MySQL
Docker安装Mysql
官方仓库
https://hub.docker.com/_/mysql
拉取镜像
docker pull mysql:8.0
运行容器
官方镜像默认不允许root远程登录,所以有如下几种方式来运行mysql容器,第一种使用非root用户。
# 这里使用的是非root用户为主的远程登录方式
# 建议 MYSQL_DATABASE 参数的值改为你需要操作的数据库名称,不改后续还需要修改。
docker run --name mysql80 -e MYSQL_ROOT_PASSWORD=12345678 -e MYSQL_DATABASE=appdb -e MYSQL_USER=wukai -e MYSQL_PASSWORD=12345678 -p 127.0.0.1:3306:3306 -v mysql80-data:/var/lib/mysql -d mysql:8.0
强制使用root用户
docker run --name mysql80 -e MYSQL_ROOT_PASSWORD=12345678 -e MYSQL_ROOT_HOST=% -p 127.0.0.1:3306:3306 -v mysql80-data:/var/lib/mysql -d mysql:8.0
mysql -h 127.0.0.1 -P 3306 -u root -p --protocol=tcp
进入容器
如下命令会使用root用户登录mysql
docker exec -it mysql80 mysql -uroot -p
常见问题
[42000][1044] Access denied for user 'wukai'@'%' to database 'yuapi_db'
这个原因可能是因为没有权限操作,因为在使用普通用户登录的时候,没有给用户授权该数据库,解决方案如下:
docker exec -it mysql80 mysql -uroot -p
如下是进入mysql后的操作
CREATE DATABASE IF NOT EXISTS yuapi_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
GRANT ALL PRIVILEGES ON yuapi_db.* TO 'wukai'@'%';
FLUSH PRIVILEGES;