一次奇怪的建站过程(上)

起因:同学的朋友想要搭建一个网站(有源码),问我能不能搭建。(有偿)

过了一两周,发了源码给我(两个站点erp和***shop),我没有多想,一套LNMP直接搭上,搭完以后…发现这是用apache的.htaccess文件实现的跳转,虚拟机又忘记打快照,只好推倒重新搭建…

以下内容全部采用虚拟机完成,操作系统为centos7,lnmp版本为1.6。

以下内容为详细过程(记忆中的):

1.搭建LNMP平台,随后推倒采用LAMP(这次打上了快照)。

插曲:采用lnmp.org中的脚本进行安装,简单方便。创建screen的时候,-s参数忘了大写,后面稍微一看,会话没创建成功,时间已经指向了半夜一点多… SSH不能关掉,要等待安装完毕。(给自己一个熬夜的借口)

安装过程比较简单,就不附图了,下载安装过程比较慢,但是不用自己一个个安装服务,还是比较方便的。


2.上传网站(erp站点),测试。

上传完毕后网站就可以使用了,但是使用的数据库是公网其他服务器的…当然不符合我们的要求!但是又没有提供数据库内容给我,只好在源码当中查找一下有没有数据库相关的信息。

通过搜索的方式找到了database.php文件和db.php文件,分别打开瞧瞧。(其中database.php文件的目录,大概率是某PHP框架的配置文件,而db.php文件位于data\conf下,大概率是数据库配置文件了!)

database搜索结果
db搜索结果

打开查看以后,很明显db.php文件就是该站点的数据库配置信息了!

db.php

通过配置文件,看到了该站点使用的数据库为mysql,服务器地址居然采用的是IP!mysql用户名密码也拿到了(非数据库root用户)!应用所使用的数据库名称分别为new_erp和stoshop。(一般而言,本地搭建的mysql会采用localhost作为地址,而不用IP,可以减少一些风险)


以下操作请勿在非测试的网络环境中进行!!!

以下操作请勿在非测试的网络环境中进行!!!

以下操作请勿在非测试的网络环境中进行!!!


3.使用mysqldump,下载数据库内容。(请勿在非测试环境中进行)

开始兴高采烈的下载数据库了(有偿补贴到手!

常规操作之日常报错

emm…果然事情没有这么简单。查询了这个报错,原因是该数据库(new_erp)里的视图,创建用户为stat@%,而数据库当中又没有这个用户。(出现原因:从某处备份好数据库,在服务器中导入数据库。备份前的数据库当中使用了特定用户(此处为stat@%)创建的视图,在导入后由于用户不存在,无法正常访问该视图,自然也无法备份数据库了。)

解决方法:修改视图的创建用户。修改过程…日常出错

在数据库中,使用命令:

SELECT CONCAT("ALTER DEFINER='root'@'localhost' VIEW ", 
 table_name, " AS ", view_definition, ";") 
 FROM information_schema.views 
 WHERE table_schema='new_erp';

可以生成一串新的命令,新的命令用于修改视图的创建用户。其中root@localhost为修改完后的用户,new_erp为需要修改的数据库。

命令生成的内容如下:

生成的命令,内容太多,没有截完整

生成了命令当然直接复制粘贴,挪出来干什么?在mysql中直接粘贴执行!经历了这一步以后并没有任何作用,还是1449错误。(╯‵□′)╯︵┻━┻

随后把命令复制出来,复制粘贴执行 (●’◡’●)

(╯‵□′)╯︵┻━┻

注意这几个|(此处截图的命令有误,实际命令中为root@localhost,而非stat@%)
常规操作之执行错误 (此处截图的命令有误,实际命令中为root@localhost,而非stat@%)

好吧,删掉竖线(|)执行。(●’◡’●)成功!

你们以为这就完事了吗?mysqldump备份——报错——还是1449错误!(╯‵□′)╯︵┻━┻ * 3

打开mysql:

select * from information_schema.views;
喜闻乐见的没有变化 (╯‵□′)╯︵┻━┻

粘贴——执行——查看——毫无变化 (╯‵□′)╯︵┻━┻

仔细想想,这个视图是在new_erp数据库当中的,会不会要先切换到数据库当中才能顺利修改呢?(网上的解决方法全部没有说这一步,是我找的方式不对吗)

操作开始:

use new_erp

粘贴——执行——查看——毫无变化顺利修改

修改成功

mysqldump备份!

备份成功

实际从公网服务器备份数据库到本机的时间非常的久,数据库大小为600+MB,耗时大概2小时。

数据库文件大小(请忽略修改aoye时间)

下载完数据库以后,在本地mysql中创建数据库——导入数据。

至于stoshop数据库,备份还原没有任何的异常,最终两个数据库都被我完完全全扒下来了(请勿在非测试环境中进行扒库操作!!!)


4.修改db.php配置文件,让网站使用本地的数据库

修改过程没什么复杂的,DB_HOST参数改为本机(localhost),其他的用户名密码照常设置就可以了。

另外,在数据库用户配置中,最好单个数据库配置单个用户,并且只有单独数据库的访问功能,避免一些敏感信息泄露。也要避免使用root用户作为程序访问的用户。

修改db.php的配置信息

内容比较多,为了控制篇幅,余下内容在下一篇文章中发布。

下篇:一次奇怪的建站过程(下)

2020/4/22

如需转载,请注明出处!