sqlstate[hy000][1045]拒绝用户'root'@'172.19.0.4'使用docker访问

xzv2uavs  于 2021-06-15  发布在  Mysql
关注(0)|答案(5)|浏览(519)

我目前正在学习在windows上使用docker,我正在学习这个教程。对于docker设置,我使用的是laradock。我正在尝试运行mysql apache2 rabbitmq和phpmyadmin容器,我所做的一切都与视频中的相同,但当我尝试迁移表时,出现以下错误:
illuminate\database\queryexception:拒绝用户'root'@'172.19.0.4'的sqlstate[hy000][1045]访问(使用密码:yes)
我在phpmyadmin中创建了空数据库。
一切都在我的projects.env和laradock/.env中配置
我的项目环境:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=my_database_name
DB_USERNAME=root
DB_PASSWORD=*********

我仔细检查了我的密码,它是正确的。
我的laradock/.env配置:

MYSQL_VERSION=latest
MYSQL_DATABASE=my_database_name
MYSQL_USER=root
MYSQL_PASSWORD=******
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=******

docker-compose.yml配置:

mysql:
  build:
    context: ./mysql
    args:
      - MYSQL_VERSION=${MYSQL_VERSION}
  environment:
    - MYSQL_DATABASE=${MYSQL_DATABASE}
    - MYSQL_USER=${MYSQL_USER}
    - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - TZ=${WORKSPACE_TIMEZONE}
  volumes:
    - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
    - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
  ports:
    - "${MYSQL_PORT}:3306"
  networks:
    - backend

为了确保我的所有容器都正常工作,我输入此命令并得到以下响应:

docker-compose ps

上一个命令的响应
我的phpmyadmin中的根用户:
形象

blpfk2vs

blpfk2vs1#

其实你不能创造 root docker中的用户 .env 文件。默认情况下会创建根用户,如果要使用它,只需为其设置密码: MYSQL_ROOT_PASSWORD 在拉拉多克。如果要创建另一个用户,请设置 MYSQL_USER 以及 MYSQL_PASSWORD 所以在laradock/.env文件中:

MYSQL_VERSION=5.7
MYSQL_DATABASE=my_database_name
MYSQL_USER=myusername // any name other than root
MYSQL_PASSWORD=mypassword
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=rootPassword // password to root user
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

现在你可以用 root 用户或 myusername laravel项目中的用户:

MYSQL_USER=root
MYSQL_PASSWORD=rootPassword 

OR 

MYSQL_USER=myusername 
MYSQL_PASSWORD=mypassword

记住,要连接到laradock中正确的数据库主机,应该使用 mysql 而不是 localhost or 127.0.0.1 在拉威尔:

DB_HOST=mysql
2ledvvac

2ledvvac2#

可能与 bind-address 只接受本地主机连接。查看这个示例,了解如何在mysql容器中使用自定义mysqld.conf

8hhllhi2

8hhllhi23#

这对我有好处:

rm -rf /root/.laradock
pobjuy32

pobjuy324#

如果您使用laradock,那么一切都将在laradock/mariadb/docker-entrypoint-initdb.d/createdb.sql.example中解释
您必须删除文件夹$data\u path\u host/mariadb,并在/docker-entrypoint-initdb.d/myscript.sql中创建新用户
例子:

DROP USER IF EXISTS 'user'@'%' ;

FLUSH PRIVILEGES;

CREATE USER 'user' IDENTIFIED BY 'pass';
GRANT USAGE ON *.* TO 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL privileges ON *.* TO 'user'@'%';
CREATE DATABASE IF NOT EXISTS `symfonydb1` COLLATE 'utf8_general_ci';

FLUSH PRIVILEGES;
kyvafyod

kyvafyod5#

通过将my.env mysql用户名和密码配置更改为:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=my_database_name
DB_USERNAME=root
DB_PASSWORD=root

并将laradock/.env配置中的mysql版本更改为:

MYSQL_VERSION=5.7
MYSQL_DATABASE=my_database_name
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

之后,我停止了所有容器:

docker-compose down

下一步是使用新配置构建mysql容器:

docker-compose build --no-cache mysql

在那之后,我又把所有的集装箱都跑了一遍

docker-compose up -d mysql apache2 rabbitmq phpmyadmin

导航到工作区工作目录并迁移了我的表:

php artisan migrate

一切如期而至:
已成功创建迁移表。
迁移:2018\u 11\u 28\u 114446\u创建\u帐户\u表
迁移:2018\ 11\ 28\ 114446\创建\账户\表

相关问题