问题

  帮同学安装typecho博客,环境是CentOS7、Nginx1.17、php5、mysql5.7。typecho安装过程中出现如下问题:

  对不起,无法连结数据库,请先检测数据库配置再继续进行安装

  由于typecho不复印具体的php报错,所以同样是“无法连结数据库”typecho注册用户权限,原因竟千差万别。因此在这里整理一下排错方法,方便遇见同样问题的朋友,找到自己出问题的成因。

  排错方法1.确认是否是 数据库信息填写错误

  最容易想起的报错缘由,就是在install界面填写的数据库配置信息不对。检查一下,在typecho安装页面,填写的数据库名称、数据库用户名、数据库用户密码是否正确;

  2.确认是否是 数据库服务存在问题

  如果信息正确,那么考虑是否是mysql的服务的问题,比如,数据库服务没有运行、你自定义的数据库端口跟填写不一致等等。运行下述命令:

  netstat -utnlp | grep mysql

  2.1假如命令运行有结果,显示的端口号跟你在typecho安装页面填写的端口一致typecho注册用户权限,说明mysql服务运行跟窃听是正常的。

  2.2假如没有结果,是mysql服务没有启动,或者防火墙禁掉了mysql的运行端口。

  关掉防火墙,然后用你安装mysql的那种linux系统用户启动一下mysql服务。

  .../support-files/mysql.server start

  ...是你安装mysql时配置的mysql根目录(basedir),一般是/usr/local/mysql或则/etc/mysql。

  2.3假如有结果,但显示的端口号,和你在typecho安装页面填写的端口不一致,说明你端口号填错了,请以这个命令运行结果中显示的端口为准。

  3.确认是否是 数据库例子/数据库用户存在问题

  如果数据库服务正常,再考虑是不是数据库例子出了问题,比如忘了争创数据库例子、填写的数据库用户权限不足等等。

  如果忘了争创数据库例子(就是你填写的数据库名虽然并不存在),那就争创一下,并且保障你填的那种数据库用户,的确有你填的那种数据库的完全权限。下面是争创数据库例子、创建数据库用户、赋予权限的命令。

  假设,你在typecho安装页填的数据库名是AAA,数据库用户名是BBB,密码是CCC:

  //linux系统命令,进入mysql:

  mysql -u root -p

  //sql命令,创建一个新数据库AAA;

  create database if not exists AAA default charset utf8 collate utf8_general_ci;

  //sql命令,创建一个新用户BBB,密码是CCC:

  create user 'BBB'@'%' identified by 'CCC';

  //sql命令,数据库AAA的权限全部向BBB开放:

  grant all on AAA.* to 'BBB@'%';

  //sql命令,刷新权限

  flush privileges;

  4.确认是否是 php-fpm跟数据库的连结存在问题

  如果数据库确确实实建好了、数据库用户也分配好了权限、mysql服务也正常启动、端口也没毛病,还是连结不上数据库,可能是php.ini配置的问题。php-fpm默认使用socket连结数据库,而socket文件(mysql.sock)的位置是从php.ini文件中调用的。但mysql.sock文件的实际位置,是mysql配置决定的,所以php.ini默认的socket位置或许不对,导致找不到socket、连接不上。

  这个有解决两个方法:

  4.1.直接把typecho安装页面中,数据库地址 “localhost” 改为 “127.0.0.1” 。

  这就相当于不用socket连结而用TCP/IP连结。这一步骤mysql或许也须要调整一下,让mysql以tcp/ip的形式窃听你指定的那种端口(一般是3306)。这一方案我没有检测。

  4.2.修改php.ini文件,指向正确的mysql.sock位置。

  首先瞧瞧你的mysql.sock文件在哪,可以用find命令查,也可以查看mysql的配置文件f(一般在目录/etc下边)中socket数组是如何写的。假设,你查至mysql.sock的位置是/ABC/mysql.sock,那么你应当更改php.ini文件,使它对准正确的mysql.sock位置。vim php.ini,找到mysql.default_socket这一数组,取消它的注释,并改为

  mysql.default_socket =/ABC/mysql.sock

  如果你也不知道php.ini文件在哪,可以find / -name 'php.ini'。

  当然,在typecho安装界面,解释器选择mysql原生,才须要更改php.ini的mysql.default_socket数组,如果类库选择pdo,那还要更改的数组就弄成php.ini文件中pdo对应的socket数组了。

  以上就是我想起的或许造成 “对不起,无法连结数据库,请先检测数据库配置再继续进行安装” 的所有或许的成因了。

  顺便提一下安装时或许出现的另一种问题:安装typecho后立刻踏入nginx未知报错页面。这有或许是Nginx配置文件里,location前面的(或者fastcgi_split_path_info前面的)正则式子没写对,导致path_info不能正确传递至fastcgi,百度一下正确的写法吧~(说这段是因为我自己就疏忽弄错了哈哈哈)

Last modification:May 2nd, 2021 at 09:48 pm
如果觉得我的文章对你有用,请随意赞赏