赞片CMSMySQL8.0

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 19:31 ·2 浏览 ·0 回复

学完这篇,你能在自己的服务器上把赞片CMS顺利跑在 MySQL 8.0 上,并解决连不上、装不上、数据乱码这三类最常见的翻车问题。

第一步:先确认版本要求,别急着装

这一步要搞清你的赞片CMS安装包到底支持哪个 PHP 和 MySQL 版本,避免装到一半发现不兼容。

打开安装包根目录下的 README.txt 或 说明.txt,看作者标注的运行环境。常见情况是:赞片CMS 本身代码较老(多数基于 ThinkPHP 3.2 内核),推荐 PHP 5.6~7.4,MySQL 5.5~5.7。MySQL 8.0 不是官方标注范围,但实际能跑,前提是按下面几步改配置。

同时检查 PHP 扩展,缺一个都装不上:

php -v
php -m | grep -Ei "pdo_mysql|mysqli|mbstring|gd|curl|fileinfo"

注意:如果用 PHP 8.0 及以上,赞片CMS 里大量 each()、create_function() 之类的老写法会直接报致命错误。跑 MySQL 8.0 不代表能跑 PHP 8,PHP 建议锁在 7.4。

第二步:建库时字符集必须选 utf8mb4

这一步创建一个供赞片CMS使用的数据库和账号,做完你手里会有一组可用的连接信息。

登录 MySQL:

mysql -uroot -p

执行:

CREATE DATABASE zanpian DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'zanpian'@'127.0.0.1' IDENTIFIED BY 'Zanpian@2024';
GRANT ALL PRIVILEGES ON zanpian.* TO 'zanpian'@'127.0.0.1';
FLUSH PRIVILEGES;

注意:不要用 utf8。MySQL 的 utf8 是残缺的三字节实现,存影片名里的 emoji 或生僻字会截断报错。赞片CMS 采集来的数据里这类字符很常见。

第三步:把密码认证插件改回 mysql_native_password

这一步解决「2054 报错」——MySQL 8.0 默认用 caching_sha2_password,老版本 PHP 的 mysql 驱动不认识它。

ALTER USER 'zanpian'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'Zanpian@2024';
FLUSH PRIVILEGES;
SELECT user, host, plugin FROM mysql.user WHERE user='zanpian';

最后一行输出里 plugin 显示 mysql_native_password 才算成功。

注意:如果你用的是宝塔面板,也可以在「数据库」页面点「phpMyAdmin」→「用户账户」→ 编辑该用户 → 把认证插件下拉框选成 mysql_native_password,效果一样。

第四步:关掉 ONLY_FULL_GROUP_BY

这一步解决安装或使用过程中出现的 1055 报错(Expression #1 of SELECT list is not in GROUP BY clause)。赞片CMS 的 SQL 里有很多不符合严格分组规范的写法。

先看当前设置:

SELECT @@GLOBAL.sql_mode;

如果结果里含 ONLY_FULL_GROUP_BY,编辑 MySQL 配置文件 /etc/my.cnf(宝塔是 /www/server/mysql/etc/my.cnf),在 [mysqld] 段落下加一行:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

保存后重启:systemctl restart mysqld,再执行 SELECT @@GLOBAL.sql_mode; 确认 ONLY_FULL_GROUP_BY 已消失。

注意:临时改(SET GLOBAL sql_mode=...)重启就失效,一定要写进配置文件。

第五步:导入 SQL 文件前先做两处替换

这一步处理安装包自带的 .sql 文件,避免导入到一半中断。

老版本导出文件里常出现 TYPE=MyISAM 和 ENGINE=MyISAM DEFAULT CHARSET=utf8,在 MySQL 8.0 下前者已彻底废弃:

sed -i 's/TYPE=MyISAM/ENGINE=MyISAM/g' zanpian.sql
sed -i 's/CHARSET=utf8/CHARSET=utf8mb4/g' zanpian.sql
mysql -uzanpian -p zanpian < zanpian.sql

如果你走网页安装向导(访问 http://你的域名/install/index.php),跳过这步即可,向导会自己建表。

第六步:填写数据库配置文件

这一步把连接信息写进赞片CMS,页面才能读出数据。

如果安装包有 install 目录,直接访问域名跑向导,按界面填:数据库地址 127.0.0.1、端口 3306、库名 zanpian、用户名 zanpian、密码、表前缀(默认 zan_)。

如果手工配置,先定位配置文件:

grep -rl "DB_HOST\|db_host" /www/wwwroot/你的站点目录 --include="*.php" | head

常见位置是 application/common/conf/config.php 或 data/config.php。找到后把 hostname、database、username、password、hostport 改成上面建的值。

注意:数据库地址一定填 127.0.0.1,别填 localhost。填 localhost 时 PHP 会走 Unix socket,容易报 2002 连接失败。

第七步:访问后台验证

浏览器打开 http://你的域名/admin.php(部分版本是 /admin/),用安装时设的账号登录。然后依次检查:首页能否打开、搜索框能否出结果、会员注册是否正常写入。

若首页报 SQLSTATE[HY000] [2054],说明第三步没生效;报 1055,说明第四步没生效。

小结

  • MySQL 8.0 跑赞片CMS,核心是绕开三个「默认值陷阱」:认证插件、sql_mode、字符集。
  • 建库一律用 utf8mb4 / utf8mb4_unicode_ci。
  • 账号认证插件必须改成 mysql_native_password,改完用 SELECT user,host,plugin 验证。
  • sql_mode 里的 ONLY_FULL_GROUP_BY 必须去掉,且要写进 my.cnf 持久化。
  • PHP 建议停在 7.4,别跟着上 8.x。
  • 连接地址写 127.0.0.1,不写 localhost。
版权声明:本文来自 GJ站长论坛《赞片CMSMySQL8.0》
原文链接:https://www.gj0.com/thread-496.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~