KiwiTCMS - MySQL 具有 mysql_native_password 加密方法的数据库
KiwiTCMS - MySQL DB with mysql_native_password encryption method
设置
- 猕猴桃 - 最新
- mysql -最新 (v8.0.21)
- os - mac
我把docker-compose.yml
改成下面这样,两个容器都可以启动了。
services:
db:
container_name: kiwi_db
image: mysql:latest
volumes:
- db_data:/var/lib/kiwi_mysql/data
# workaround for missing charset & collation support
# https://github.com/sclorg/mariadb-container/pull/125
- ./99-charset.sh:/usr/share/container-scripts/mysql/init/99-charset.sh:Z
- ./99-charset.cnf:/usr/share/container-scripts/mysql/cnf/99-charset.cnf:Z
restart: always
environment:
MYSQL_ROOT_PASSWORD: kiwi-1s-aw3s0m3
MYSQL_DATABASE: kiwi
MYSQL_USER: kiwi
MYSQL_PASSWORD: kiwi
MYSQL_CHARSET: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
web:
container_name: kiwi_web
depends_on:
- db
restart: always
image: kiwitcms/kiwi:latest
ports:
- 9001:8080
- 9443:8443
volumes:
- uploads:/Kiwi/uploads:Z
environment:
KIWI_DB_HOST: db
KIWI_DB_PORT: 3306
KIWI_DB_NAME: kiwi
KIWI_DB_USER: kiwi
KIWI_DB_PASSWORD: kiwi
KIWI_DONT_ENFORCE_HTTPS: "true"
links:
- db
volumes:
db_data:
uploads:
当我执行docker exec -it kiwi_web /Kiwi/manage.py migrate
时,它会得到一些错误信息。
我正在尝试将用户密码的加密方式从caching_ sha2_ Password
更改为mysql_native_password
,但仍然弹出同样的错误信息。
错误回溯:
Traceback (most recent call last):
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
self.connection = self.get_new_connection(conn_params)
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
return Database.connect(**conn_params)
File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
上述异常是以下异常的直接原因:
Traceback (most recent call last):
File "/Kiwi/manage.py", line 12, in <module>
execute_from_command_line(sys.argv)
File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 366, in execute
self.check()
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 395, in check
include_deployment_checks=include_deployment_checks,
File "/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 63, in _run_checks
issues = run_checks(tags=[Tags.database])
File "/venv/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "/venv/lib/python3.6/site-packages/django/core/checks/database.py", line 10, in check_database_backends
issues.extend(conn.validation.check(**kwargs))
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 9, in check
issues.extend(self._check_sql_mode(**kwargs))
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
with self.connection.cursor() as cursor:
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 260, in cursor
return self._cursor()
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 236, in _cursor
self.ensure_connection()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
self.connection = self.get_new_connection(conn_params)
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
return Database.connect(**conn_params)
File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
您正在尝试使用官方 MySQL docker 图像,其中 Kiwi TCMS 默认使用 CentOS MariaDB 图像 docker-compose.yml 配置。
快速查看 MySQL 在 https://hub.docker.com/_/mysql 的容器镜像告诉我它不支持 MariaDB 镜像中使用的一些环境变量。
我看到的错误是由于尝试使用似乎与 MySQL 不兼容的 mariadb 客户端库(建立连接)引起的。而且我认为现在 MariaDB 和 MySQL 最新版本之间存在很多不兼容问题。
所以你需要做两件事:
根据他们的文档找出如何通过环境变量正确配置 MySQL 容器
弄清楚 MariaDB 客户端库是否可以与 MySQL 服务器一起工作(或不)。
另见 https://docs.djangoproject.com/en/3.0/ref/databases/#mariadb-notes 参考。
对于 2),您可以在 GitHub 上提出问题,这样我们就不会忘记将其添加到我们的测试套件中。 IDK 在我的脑海中 mysql/mariadb 库最近的状态是什么,是否可以安装和使用它们 side-by-side 或者它们是否会相互冲突。
设置
- 猕猴桃 - 最新
- mysql -最新 (v8.0.21)
- os - mac
我把docker-compose.yml
改成下面这样,两个容器都可以启动了。
services:
db:
container_name: kiwi_db
image: mysql:latest
volumes:
- db_data:/var/lib/kiwi_mysql/data
# workaround for missing charset & collation support
# https://github.com/sclorg/mariadb-container/pull/125
- ./99-charset.sh:/usr/share/container-scripts/mysql/init/99-charset.sh:Z
- ./99-charset.cnf:/usr/share/container-scripts/mysql/cnf/99-charset.cnf:Z
restart: always
environment:
MYSQL_ROOT_PASSWORD: kiwi-1s-aw3s0m3
MYSQL_DATABASE: kiwi
MYSQL_USER: kiwi
MYSQL_PASSWORD: kiwi
MYSQL_CHARSET: utf8mb4
MYSQL_COLLATION: utf8mb4_unicode_ci
web:
container_name: kiwi_web
depends_on:
- db
restart: always
image: kiwitcms/kiwi:latest
ports:
- 9001:8080
- 9443:8443
volumes:
- uploads:/Kiwi/uploads:Z
environment:
KIWI_DB_HOST: db
KIWI_DB_PORT: 3306
KIWI_DB_NAME: kiwi
KIWI_DB_USER: kiwi
KIWI_DB_PASSWORD: kiwi
KIWI_DONT_ENFORCE_HTTPS: "true"
links:
- db
volumes:
db_data:
uploads:
当我执行docker exec -it kiwi_web /Kiwi/manage.py migrate
时,它会得到一些错误信息。
我正在尝试将用户密码的加密方式从caching_ sha2_ Password
更改为mysql_native_password
,但仍然弹出同样的错误信息。
错误回溯:
Traceback (most recent call last):
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
self.connection = self.get_new_connection(conn_params)
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
return Database.connect(**conn_params)
File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
MySQLdb._exceptions.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
上述异常是以下异常的直接原因:
Traceback (most recent call last):
File "/Kiwi/manage.py", line 12, in <module>
execute_from_command_line(sys.argv)
File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 366, in execute
self.check()
File "/venv/lib/python3.6/site-packages/django/core/management/base.py", line 395, in check
include_deployment_checks=include_deployment_checks,
File "/venv/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 63, in _run_checks
issues = run_checks(tags=[Tags.database])
File "/venv/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
new_errors = check(app_configs=app_configs)
File "/venv/lib/python3.6/site-packages/django/core/checks/database.py", line 10, in check_database_backends
issues.extend(conn.validation.check(**kwargs))
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 9, in check
issues.extend(self._check_sql_mode(**kwargs))
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/validation.py", line 13, in _check_sql_mode
with self.connection.cursor() as cursor:
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 260, in cursor
return self._cursor()
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 236, in _cursor
self.ensure_connection()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/db/utils.py", line 90, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection
self.connect()
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/base/base.py", line 197, in connect
self.connection = self.get_new_connection(conn_params)
File "/venv/lib/python3.6/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 233, in get_new_connection
return Database.connect(**conn_params)
File "/venv/lib/python3.6/site-packages/MySQLdb/__init__.py", line 130, in Connect
return Connection(*args, **kwargs)
File "/venv/lib/python3.6/site-packages/MySQLdb/connections.py", line 185, in __init__
super().__init__(*args, **kwargs2)
django.db.utils.OperationalError: (2059, 'Plugin caching_sha2_password could not be loaded: lib64/mariadb/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory')
您正在尝试使用官方 MySQL docker 图像,其中 Kiwi TCMS 默认使用 CentOS MariaDB 图像 docker-compose.yml 配置。
快速查看 MySQL 在 https://hub.docker.com/_/mysql 的容器镜像告诉我它不支持 MariaDB 镜像中使用的一些环境变量。
我看到的错误是由于尝试使用似乎与 MySQL 不兼容的 mariadb 客户端库(建立连接)引起的。而且我认为现在 MariaDB 和 MySQL 最新版本之间存在很多不兼容问题。
所以你需要做两件事:
根据他们的文档找出如何通过环境变量正确配置 MySQL 容器
弄清楚 MariaDB 客户端库是否可以与 MySQL 服务器一起工作(或不)。
另见 https://docs.djangoproject.com/en/3.0/ref/databases/#mariadb-notes 参考。
对于 2),您可以在 GitHub 上提出问题,这样我们就不会忘记将其添加到我们的测试套件中。 IDK 在我的脑海中 mysql/mariadb 库最近的状态是什么,是否可以安装和使用它们 side-by-side 或者它们是否会相互冲突。