Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 拒绝用户访问';根'@';本地主机';使用mariadb 10.4.8 docker容器,在附加外部卷时使用docker编写和发布_Mysql_Docker_Docker Compose_Mariadb - Fatal编程技术网

Mysql 拒绝用户访问';根'@';本地主机';使用mariadb 10.4.8 docker容器,在附加外部卷时使用docker编写和发布

Mysql 拒绝用户访问';根'@';本地主机';使用mariadb 10.4.8 docker容器,在附加外部卷时使用docker编写和发布,mysql,docker,docker-compose,mariadb,Mysql,Docker,Docker Compose,Mariadb,我是Docker新手,我试图为我的应用程序包装mariadb的Docker容器,但当我开始运行mariadb容器时,它显示用户“root”@“localhost”(使用密码:YES)dockerfile的访问被拒绝 下面是我正在使用的docker compose version: '3' services: mysql: image: mariadb container_name: mariadb volumes: - dbvolume:/var/lib

我是Docker新手,我试图为我的应用程序包装mariadb的Docker容器,但当我开始运行mariadb容器时,它显示用户“root”@“localhost”(使用密码:YES)dockerfile的访问被拒绝

下面是我正在使用的docker compose

version: '3'

services:
  mysql:
    image: mariadb
    container_name: mariadb
    volumes:
      - dbvolume:/var/lib/mysql
      - ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_ROOT_USER: root
      MYSQL_USER: root
      MYSQL_PASSWORD: root123
      MYSQL_DATABASE: appdata
    ports:
      - "3333:3306"

volumes:
  dbvolume:
通过引用几个链接多次尝试后,我能够将我的应用程序连接到docker容器,但在创建docker容器时,它无法导入AppDatabase.sql脚本

但是现在,通过使用相同的docker compose文件,我无法将mariadb连接到我的应用程序,我认为即使它没有将SQL脚本导入数据库(基于我观察到的日志)

以下是运行docker compose时生成的docker日志:

$ docker logs 3fde358ff015
2019-09-24 17:40:37 0 [Note] mysqld (mysqld 10.4.8-MariaDB-1:10.4.8+maria~bionic) starting as process 1 ...
2019-09-24 17:40:37 0 [Note] InnoDB: Using Linux native AIO
2019-09-24 17:40:37 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-09-24 17:40:37 0 [Note] InnoDB: Uses event mutexes
2019-09-24 17:40:37 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-09-24 17:40:37 0 [Note] InnoDB: Number of pools: 1
2019-09-24 17:40:37 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-09-24 17:40:37 0 [Note] mysqld: O_TMPFILE is not supported on /tmp (disabling future attempts)
2019-09-24 17:40:37 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
2019-09-24 17:40:37 0 [Note] InnoDB: Completed initialization of buffer pool
2019-09-24 17:40:37 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2019-09-24 17:40:37 0 [Note] InnoDB: Upgrading redo log: 2*50331648 bytes; LSN=21810033
2019-09-24 17:40:38 0 [Note] InnoDB: Starting to delete and rewrite log files.
2019-09-24 17:40:38 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 50331648 bytes
2019-09-24 17:40:38 0 [Note] InnoDB: Setting log file ./ib_logfile1 size to 50331648 bytes
2019-09-24 17:40:38 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2019-09-24 17:40:38 0 [Note] InnoDB: New log files created, LSN=21810033
2019-09-24 17:40:38 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-09-24 17:40:38 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-09-24 17:40:38 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-09-24 17:40:38 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2019-09-24 17:40:38 0 [Note] InnoDB: Waiting for purge to start
2019-09-24 17:40:38 0 [Note] InnoDB: 10.4.8 started; log sequence number 21810033; transaction id 14620
2019-09-24 17:40:38 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2019-09-24 17:40:38 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-09-24 17:40:38 0 [Note] Server socket created on IP: '::'.
2019-09-24 17:40:38 0 [Warning] 'proxies_priv' entry '@% root@c980daa43351' ignored in --skip-name-resolve mode.
2019-09-24 17:40:38 0 [Note] InnoDB: Buffer pool(s) load completed at 190924 17:40:38
2019-09-24 17:40:38 0 [Note] Reading of all Master_info entries succeeded
2019-09-24 17:40:38 0 [Note] Added new Master_info '' to hash table
2019-09-24 17:40:38 0 [Note] mysqld: ready for connections.
Version: '10.4.8-MariaDB-1:10.4.8+maria~bionic'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution
我正在尝试导入的SQL脚本:

create database appdata;
use appdata;

CREATE TABLE `appdatadetails` (
  `Name` varchar(8) NOT NULL,
  `appIndex` int(11) NOT NULL,
  `connector` varchar(16) DEFAULT NULL,
  `intName` varchar(12) DEFAULT NULL,
  `intIndex` int(11) DEFAULT NULL,
  PRIMARY KEY (`Name`,`appIndex`)
) 
请帮助我理解我做错了什么,我已经在不同的博客上尝试了所有可能的解决方案


更新:


最新更新:

我能够用10.1启动并运行mariadb docker映像。但若我附加音量,那个么我仍然面临这个问题

Docker Compose:

version: '3'

services:
  mysql:
    image: mariadb:10.1
    container_name: mariadb
    volumes:
      - container-volume:/var/lib/mysql
      - ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: appdata
    ports:
      - "3333:3306"

volumes:
  container-volume:
以及日志错误消息,如果我附加容器卷

Creating mariadb ... done
Attaching to mariadb
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] mysqld (mysqld 10.1.41-MariaDB-1~bionic) starting as process 1 ...
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Using mutexes to ref count buffer pool pages
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: The InnoDB memory heap is disabled
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Compressed tables use zlib 1.2.11
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Using Linux native AIO
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Using SSE crc32 instructions
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Initializing buffer pool, size = 256.0M
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Completed initialization of buffer pool
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] InnoDB: Highest supported file format is Barracuda.
mariadb  | InnoDB: No valid checkpoint found.
mariadb  | InnoDB: A downgrade from MariaDB 10.2.2 or later is not supported.
mariadb  | InnoDB: If this error appears when you are creating an InnoDB database,
mariadb  | InnoDB: the problem may be that during an earlier attempt you managed
mariadb  | InnoDB: to create the InnoDB data files, but log file creation failed.
mariadb  | InnoDB: If that is the case, please refer to
mariadb  | InnoDB: http://dev.mysql.com/doc/refman/5.6/en/error-creating-innodb.html
mariadb  | 2019-09-25  6:56:26 140542855440384 [ERROR] Plugin 'InnoDB' init function returned error.
mariadb  | 2019-09-25  6:56:26 140542855440384 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
mariadb  | 2019-09-25  6:56:26 140542855440384 [Note] Plugin 'FEEDBACK' is disabled.
mariadb  | 2019-09-25  6:56:26 140542855440384 [ERROR] Unknown/unsupported storage engine: InnoDB
mariadb  | 2019-09-25  6:56:26 140542855440384 [ERROR] Aborting
mariadb  | 
mariadb exited with code 1
如果我删除了容器卷,那么它正在导入.sql脚本,并且运行良好


使用工作脚本更新:在我使用mariadb 10.4.8或最新版本访问DB和附加外部卷之前

现在我已经降级(正如@adii所建议的)并尝试了。它运行完美,我们无需在卷服务中指定external:true

version: '3'

services:
  mysql:
    image: mariadb:10.1
    container_name: mariadb
    volumes:
      - ./dbvolume:/var/lib/mysql
      - ./AppDatabase.sql:/docker-entrypoint-initdb.d/AppDatabase.sql
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: appdata
    ports:
      - "3333:3306"

即使创建新容器,它也会影响新用户和密钥

删除装载位置,因为它将从该位置选择用户名和密码,也不会运行您的DB init脚本

    volumes:
      - dbvolume:/var/lib/mysql
你也不需要

create database appdata;

作为已在创建的数据库

      MYSQL_ROOT_PASSWORD: root123
      MYSQL_ROOT_USER: root
      MYSQL_DATABASE: appdata
这一步

更新:

删除用户根,因为根已定义。你可以试试看

version: '3.7'
services:

  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: appdata
    image: mariadb
docker exec -it container_name bash -c "mysql -u test -proot123"
或者第二个用户应该不同

version: '3.7'

services:

  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: appdata
      MYSQL_USER: test
      MYSQL_PASSWORD: root123
    image: mariadb

你可以试试看

version: '3.7'
services:

  mysql:
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: appdata
    image: mariadb
docker exec -it container_name bash -c "mysql -u test -proot123"

如果仍然存在问题,请删除DB映像,然后拉一个新映像

或者尝试图像标签
10.1

如果我删除了容器卷,那么它将导入.sql脚本和 运行良好

如果装载该位置,则init脚本将不会运行,因为容器预期已存在DB,或者尝试删除命名卷并创建新卷


因此,挂载位置,使用MySQL命令导入数据库,并在下次使用挂载位置

感谢您的重播,但我仍然无法访问mariadb容器。我一直收到错误1045(28000):您试图登录的用户“root”@“localhost”(使用密码:YES)的访问被拒绝?试着调试
docker exec-it mysql bash-c“mysql-u root-proot”
我已经用屏幕截图更新了我的帖子,我创建了一个文件夹并装入docker compose yml文件,执行docker compose up并尝试访问容器,但没有帮助。我已经使用了你的第二个脚本。尝试删除并测试了它,你是否使用密码运行调试脚本是的非常清楚,密码有问题。您可以尝试提供这两个示例。一个人应该工作