赞片CMSSQL
学完这篇,你能在自己的服务器上用 Docker 把赞片 CMS 跑起来,并用 SQL 完成建库、建表、导入数据这一套基本操作。
赞片 CMS 是一套基于 PHP + MySQL 的内容管理系统,部署方式不复杂,坑主要集中在数据库连接和权限上。下面按顺序走一遍。
第一步:确认环境,装好 Docker 和 Docker Compose
这一步要做什么:把运行环境准备好,得到一台能跑容器的机器。
赞片 CMS 官方推荐用 Docker 部署,PHP 版本要求 7.4 及以上,MySQL 要求 5.7 或 8.0。先确认版本:
docker -v
docker compose version
如果提示 command not found,在 Ubuntu 22.04 上执行:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
装完后 docker -v 应输出类似 Docker version 24.0.7。把当前用户加进 docker 组,避免每条命令都加 sudo:
sudo usermod -aG docker $USER
newgrp docker
注意:
newgrp只对当前终端生效,其他已打开的终端要重新登录才认这个组。
第二步:拉取镜像并启动 MySQL 容器
这一步要做什么:起一个 MySQL 实例,得到可连接的数据库服务。
新建目录并进入:
mkdir -p /opt/zanpian && cd /opt/zanpian
创建 docker-compose.yml:
services:
mysql:
image: mysql:8.0
container_name: zanpian-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: Zanpian@2024
MYSQL_DATABASE: zanpian
MYSQL_USER: zanpian
MYSQL_PASSWORD: Zanpian@2024
TZ: Asia/Shanghai
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
启动:
docker compose up -d
docker compose ps
看到 zanpian-mysql 状态是 Up 就成功了。
注意:
--default-authentication-plugin=mysql_native_password这一行不能省。MySQL 8.0 默认用 caching_sha2_password,老的 PHP 数据库扩展连不上,会报Authentication plugin 'caching_sha2_password' cannot be loaded。
第三步:建库建表
这一步要做什么:进容器执行 SQL,把库和表结构建好。
进入容器:
docker exec -it zanpian-mysql mysql -uroot -pZanpian@2024
建库(如果 compose 里已建可跳过):
CREATE DATABASE IF NOT EXISTS zanpian
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE zanpian;
建一张基础内容表:
CREATE TABLE zp_vod (
vod_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
vod_name VARCHAR(255) NOT NULL DEFAULT '',
vod_cid INT UNSIGNED NOT NULL DEFAULT 0,
vod_content TEXT,
vod_addtime INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (vod_id),
KEY idx_cid (vod_cid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
字段类型要和 CMS 的模型定义对得上,vod_id 必须是主键自增,否则后台新增内容会失败。
第四步:导入数据并授权
这一步要做什么:把已有数据导进去,并给应用账号开权限。
如果官方给了 zanpian.sql,退出 mysql 后执行:
docker exec -i zanpian-mysql mysql -uroot -pZanpian@2024 zanpian < zanpian.sql
授权给应用账号:
GRANT ALL PRIVILEGES ON zanpian.* TO 'zanpian'@'%';
FLUSH PRIVILEGES;
验证:
SELECT COUNT(*) FROM zanpian.zp_vod;
SHOW GRANTS FOR 'zanpian'@'%';
注意:应用连的是
zanpian这个账号,不是 root。授权里的主机名必须是%,写成localhost的话,容器内其他服务连不上。
第五步:配置 CMS 的数据库连接
这一步要做什么:把连接信息写进 CMS 配置文件,让程序能读库。
找到 CMS 的配置文件,通常在 config/database.php 或 application/database.php,按实际版本为准,填入:
return [
'type' => 'mysql',
'hostname' => 'zanpian-mysql',
'database' => 'zanpian',
'username' => 'zanpian',
'password' => 'Zanpian@2024',
'hostport' => '3306',
'charset' => 'utf8mb4',
];
如果 CMS 和数据库不在同一个 compose 网络里,hostname 要换成宿主机 IP,不能写 127.0.0.1。
改完重启应用容器:
docker restart zanpian-web
访问后台地址,能正常登录、列表能读出数据,就说明通了。
小结
- 环境用 Docker 部署,MySQL 选 8.0,字符集统一 utf8mb4。
- 必须加
--default-authentication-plugin=mysql_native_password,否则 PHP 连不上。 - 建库建表时字段类型、主键自增要和 CMS 模型一致。
- 应用账号授权主机写
%,配置文件里的 hostname 用容器名而非 127.0.0.1。 - 数据量大时先导表结构再导数据,避免超时。
原文链接:https://www.gj0.com/thread-851.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。