我看到了很多关于这个主题的问题,但对我来说不起作用。
当我使用 root 用户连接数据库时,出现了这个错误。
这是我从 docker 中配置的 mariadb:
docker run -d \ --name=mariadb \ -e PUID=1002 \ -e PGID=1002 \ -e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \ or -e MYSQL_ROOT_PASSWORD=password -e TZ=Europe/London \ -p 3306:3306 \ -v /media/RAID250/DockerConfigs/MariaDB:/config \ --restart unless-stopped \ lscr.io/linuxserver/mariadb:latest
我尝试手动设置密码,但仍然不起作用。
我尝试删除此文件夹 /media/RAID250/DockerConfigs/MariaDB 中的所有文件以重新安装 mariadb... 没有效果。
我尝试停止 mariadb 服务,但没有一个 cmd 行起作用。
在进入容器后,我还尝试了 mariadb-secure-installation,如下所示:docker exec -it mariadb bash:
root@c7afe65d1643:/# mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
先感谢您。
答案1
我相信你已经让自己成为了“无法逾越的单行线”通过在一行长命令中运行该命令。
让我们尝试逐行分解您的命令:
docker run -d \
--name=mariadb \
-e PUID=1002 \
-e PGID=1002 \
-e MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD \
or -e MYSQL_ROOT_PASSWORD=password \
-e TZ=Europe/London \
-p 3306:3306 \
-v /media/RAID250/DockerConfigs/MariaDB:/config \
--restart unless-stopped \
lscr.io/linuxserver/mariadb:latest
现在很容易发现错误 - 您定义了MYSQL_ROOT_PASSWORD
两次变量 - 此外很难解释 Suddenly or
(很可能是指令注释)对命令做了什么。
这说明了为什么为容器创建易于管理的启动脚本是一个好主意。您可以创建以下脚本docker_mariadb.sh
:
#!/bin/bash
docker run -d \
--name=mariadb \
-e PUID=1002 \
-e PGID=1002 \
-e MYSQL_ROOT_PASSWORD=<the-one-and-only-true-password-here> \
-e TZ=Europe/London \
-p 3306:3306 \
-v /media/RAID250/DockerConfigs/MariaDB:/config \
--restart unless-stopped \
lscr.io/linuxserver/mariadb:latest
使脚本可执行:
chmod +x ./docker_mariadb.sh
现在您只需运行./docker_mariadb.sh
即可启动容器,并且您还记录了容器的启动配置。