最近甲骨文的免费云终于注册成功,准备把wordpress迁过去,所以重新搭了一遍wordpress,又遇到很多问题,记录一下;
最新的搭建手册可参考这里,非常全面,但是没有数据库相关的操作;之前腾讯官方的搭建手册,MySQL升级到8.x版本后,里边的数据库相关操作大部分就不能用了,其他的操作还可以作为补充参考下;
对比之前搭的服务,本次迁移,还有了这些变动:
- 服务器换成 Nginx;
- MySQL从7.x升级到8.x;
其他遇到的问题如下:
0、Oracle云服务器
关闭防火墙,执行下面的操作(ubuntu)
# Oracle自带的Ubuntu镜像默认设置了Iptable规则,关闭并重启
apt-get purge netfilter-persistent
reboot
1、数据库操作
1.1、报错信息
基本上执行sql语句报错,都会提示下面这个信息,说“语法错误,检查数据库版本”之类的;
这里包含多种情况,比如真的是语法错误,但还可能是8.0版本不支持这样操作,错误信息中没有体现出来,只是说语法错误;
1.2、提示信息
一些操作(比如创建用户),执行成功后,提示信息如下:
Query OK, 0 rows affected (0.02 sec)
“0 rows affected”表示本次执行没有对原数据产生影响,新增操作是执行成功了的,不放心再查一下数据库;
1.3、mysql登录
没设密码时,直接执行“mysql”就进入mysql的命令行了,设置密码之后,需要执行下面这句,-u 后是用户名,-p 表示要输入密码;
mysql -u root -p
1.4、用户表
mysql进入命令行后,可以用sql语句查询当前用户,库和表是 mysql.user,每次都要输入“mysql”这个库名比较麻烦,可以先 “use mysql” 指定使用这个库;
use mysql;
select user,host from user;
1.5、注意结尾和刷新
每次输入sql语句后,一定要加结尾的分号“;”,否则会再一次让输入,直到有分号才结束;
“quit;”是退出mysql命令行;
用户和权限相关的操作,执行完成一定要刷新一下权限,操作才会生效;
flush privileges;
1.6、具体操作
创建用户
CREATE USER test IDENTIFIED BY 'password';
CREATE USER test@localhost IDENTIFIED BY 'password';
创建一个用户名为“test”,密码为“password”的用户;
上面两句sql不同的是访问方式,对应mysql.user表中的host字段;
“test@localhost”中的localhost表示限制在localhost,只能本地连接;
“test”是“test@%”的默认写法,%表示可以远程连接数据库;
修改密码
下面两种方式都可以;
8.0版本,password(‘123’)这种生成/设置密码的方式不能用了,一定要注意,网上很多低版本的教程,注意区分;
# 方式1
ALTER USER 'test'@'%' IDENTIFIED BY 'password1234';
# 方式2:特别要注意,密码部分不是 password('123')
set password for 'test'@'%' = '123';
给用户添加权限
这个也要注意下,8.0版本之前,可以在授权的时候创建账号,现在也不行了;只能先创建用户,再授权;
grant all privileges on wordpress.* to 'test'@'%' with grant option;
flush privileges;
上面的sql语句中,“wordpress.*” 表示 wordpress 这个数据库下的所有表;
整句sql执行完成,就给 test@% 这个用户添加了 wordpress 这个库下所有表的权限;
2、FTP
Oracle云服务器ubuntu有UFW防火墙,需要允许FTP通信
sudo ufw allow 20:21/tcp
新服务器上最终还是没装好 vsftp,安装 lrzsz 也可以解决上传下载的问题;
sudo apt install lrzsz # 安装
rz # 上传文件,会弹一个选择框
sz file.txt # 下载文件
sz dir/* # 下载dir文件夹下的所有文件
WordPress 更新插件、主题等默认都是走的 FTP 下载更新,服务器上没有 FTP 服务时,需要在 wp-config.php 中配置
// 直接使用文件上传,不走ftp
define('FS_METHOD', 'direct');