解决Mysql 8.0大小写敏感配置问题
问题描述
Mysql数据库是我们自己部署的,默认是区分大小写,由于这个问题后端代码运行时报错,我们第一反应是修改lower_case_table_names = 1来设置不区分大小写,然后重启mysql,但是这个操作并没有生效,经过排查才知道是mysql版本的问题,那应该如何解决呢?
解决方案
通过查看资料发现,mysql8.0安装初始化之后是不能更改lower_case_table_names的,官方文档的原话:
In MySQL 8.0, the lower_case_table_names variable can only be configured when the MySQL server is initialized.
那只能在Mysql安装的时候初始化这个参数配置,像我们这种情况,就只能重新初始化数据库,步骤如下:
(1)在初始化之前,必须将数据库备份,备份,备份!!!
mysqldump --all-databases -h127.0.0.1 -uroot -ppass > allbackupfile.sql
(2)删除数据目录datadir=/usr/local/mysql/data
rm -rf /usr/local/mysql/data
(3)在配置文件中[mysqld]下添加lower_case_table_names = 1
vim /etc/my.cnf
[mysqld]
lower_case_table_names = 1
(4)执行初始化命令
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lower-case-table-names=1
(5)查看配置信息
show global variables like '%lower_case%'
解决Mysql账号问题导致无法连接的问题
问题描述
后端服务启动时报了本地IP无法连接数据,报错信息如下:
经过排查发现网络是通的,那就往账号方面去排查,执行select host,user from mysql.user;查看账号信息,结果如下:
发现fxcity的host是localhost,由于后端服务与mysql服务不在同一台机器,因此导致mysql连接失败。
解决方案
修改mysql账号的配置信息,步骤如下:
(1)修改fxcity账号的host信息
create user fxcity@'%' identified by 'password';
(2)修改fxcity账号的权限信息
grant all privileges on fx_city2.* to fxcity@'%' with grant option;
(3)重新加载权限表
flush privileges;
(4)查看账号信息
select host,user from mysql.user;
解决docker镜像查看所有挂载路径问题
问题描述
前端使用nginx的docker镜像部署,1期部署文档没有明确nginx镜像的挂载路径,这个时候部署的同学可以如何查看该镜像的所有挂在路径呢?
解决方案
可以通过docker inspect nginx | grep Mounts -A 20 命令查看所有挂载信息:
"Mounts": [
{
"Type": "bind",
"Source": "/etc/nginx",
"Destination": "/etc/nginx",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/var/www",
"Destination": "/usr/share/nginx/html",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
}
以上信息可以清楚看到Source(宿主)和Destination(镜像)的挂在路径。
解决nginx报错:failed (13: Permission denied)
问题描述
每次替换前端dist包之后,重启nginx,浏览器访问都会报500错误,查看nginx日志(docker logs -f --tail=10 nginx
)报错failed (13: Permission denied),经过排查是文件修改权限问题。
解决方案
使用以下命令给挂载目录添加权限:chmod -R 777 /var/www
给各位同学建议,当nginx报错的时候,不要瞎猜原因,赶紧去看日志,看日志,看日志。
总结
1、部署文档一定要写详细,包括每一步操作,细至堡垒机访问方式、生产环境所有资源的汇总、每一步部署操作、每一个遇到的问题等等,因为项目时间隔太久,下一位接手的人有可能因为堡垒机访问的问题也会耗费一天时间。
2、生产环境部署,遇到报错马上看日志,浪费时间瞎猜还不如根据日志信息去分析。
3、生产环境有客户提供的数据库尽量使用,研发人员自己安装可能会遇到很多坑,特别是新版本的数据库。
4、在对数据库做任何操作之前,都要记得提前备份,记住备份是不用花钱的,不备份把数据搞没了就麻烦了。
5、现场部署人员在部署过程中遇到问题不要慌,在项目紧急的时候越慌张越容易犯错,就算最终部署失败,也要相信TM和PD会有Plan B去处理的。