我在另一台计算机上使用 docker、node、sequelize、adminer 和 mysql 启动了一个项目。然后我买了一台新计算机并下载了该项目,但是当尝试在新计算机上启动该项目时,出现以下错误:
Unhandled rejection SequelizeConnectionError: Client does not support authentication protocol requested by server; consider upgrading MySQL client
此错误仅影响项目的特定部分,而不影响在此状态下正常工作的管理员部分。我可以登录并查看使用 docker 创建的数据库。然后我用以下代码解决了该错误:
docker exec -it ticketgo_database_1 bash
mysql --user=root --password
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY ‘pass’;
现在代码的特定部分可以工作,但是当我尝试登录管理员时出现以下错误:
mysql has gone away
这肯定与修复第一个错误有关,但我真的不确定为什么?
最佳答案
针对 my.cnf [mysqld] 部分考虑的建议(RPS = 每秒速率)
# 20180828 0707 from mysqlservertuning.com
# log_error=/var/lib/mysql/2cd908c24352-error.log # from default of stderr, for log
# max_connect_errors=10 # from 100 - why give a cracker/hacker more than 10 shots?
# thread_cache_size=32 # from 9 for thread breathing room
# innodb_io_capacity=2000 # from 200 to allow more IOPS
# expire_logs_days=10 # from 0 for limited historical logs
# general_log=1 # from OFF until you get a handle on Adminer failure!!!
# IN ANY CASE 10 Minutes after START of INSTANCE,
# SET GLOBAL general_log=0 to avoid filling your storage media completely full.
# innodb_buffer_pool_dump_pct=90 # from 25 percent for more WARM cache at start
# innodb_page_cleaners=2 # from 1 to expedite page clean operations
# open_files_limit=30000 # from 1 million for a more reasonable upper limit
# slow_query_log=1 # from OFF should be ON for detection, prevention, if possible
每天,将当前的 my.ini 保存在\history 中,并使用指定日期的定时文件名(例如 20180827hhmm-my.cnf),以便快速返回到上次工作的 my.ini。
将此 block (包括前导日期和我们的网站名称)复制到 [mysqld] 部分的末尾,并通过删除前导 # 和空格字符来启用每天一次更改,在继续下一个更改之前进行监视。
禁用带有前导 # 和空格键的早期相同命名变量,以避免混淆。 5 年后,您仍将拥有 my.ini 更改历史记录以及大致日期。
通常每天仅进行一次更改,在进行下一次更改之前进行监控。如果更改看起来有害,请返回到上次工作的 my.ini 并告知我们。
根据您的情况,我会启用所有建议。现在还没有进入生产阶段。
如需其他建议(您还有更多机会),请查看个人资料、网络个人资料以及包括我的 Skype ID 在内的联系信息。
关于mysql - "Client does not support authentication protocol"- 错误已修复,但会导致管理员出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028530/