因为在接下来的项目中基于目前学识,确认了初步的大概方向,即数据库表的规划,所以在今天进行了之前没有完成的mysql安装,没想到遇到了大量问题与报错,首先在上一次因一些困难与时间的双重因素下并未完成的安装使得在进行mysqld install的命令时,系统报错已经存在了这样一个程序,在这里用mysqld -remove MySQL命令来卸载mysql,重新安装即可。
而在我根据教程,按照如下形式配置好my.ini的配置文件之后,
继续进一步进行mysql的初始化过程中,发现bin目录下所生成的data文件夹没有包含数据库的子目录,即:
这三个文件夹并没有被配置,一开始我并没有以为然,认为这是在进行了数据库的创建与操作之后才会出现的数据文件夹,顺然而然的按照步骤测试数据库的启动,却发现启动不了,系统日志无报错,错误编码3534。
首先我决定自己从头开始排查,误以为是之前初始化的步骤出现了差错,遂将mysql重新卸载安装,在进行到初始化这一步时又冒出了新的问题,系统报错“--initialize specified but the data directory has files in it. Aborting.”,查询得知是bin目录的文件夹中已经存在了一个data文件,于是我采用了最暴力原始的方式将data文件夹直接删除,于是初始化能够顺利进行,但mysql依然无法成功启动。在网络平台上查找解决方法之后,发现不管是查询后台是否已有mysql在运行、或是在查询了运行日志中的错误报告之后,得到在my.ini中加入一行
[mysqld]
explicit_defaults_for_timestamp=true
的配置,都无法解决我现有的问题,不过几番下来也大概猜到和我的data文件夹中并没有子目录有关,并且在查找中我也得知这三个文件夹是初始就存在的,那到底是哪里出了问题?在排错的这里时我已经将mysql卸载了不下五次,依然无法解决,于是在这个时候恰巧碰到境况相似的记录其中包含新的安装教程,事已至此再从来一次又何妨呢,所以在接下来的安装过程中发现这篇教程与之前不大相同的地方在于my.ini的配置,至少看起来完全不相同,在配置中他采用了这样的方式:
更改了配置文件的内容之后,尝试进行初始化并惊讶的发现之前一直以来没有子文件夹的data文件夹中居然齐活了,并且如我所推测的那样mysql也成功的完成了初次的启动,普天同庆TT,所依窝最后的猜测是之前所使用的配置文件内容并不完善,导致子文件没有被创建或是被创建在了我找不到的路径中。
在我以为这艰难的mysql安装教程终于以及到尽头时,没想到他只是“告一段落”,因为在紧接着我的登录过程就出现了障碍,不论是更改密码password或是空密码回车进入数据库,都会报错ERROR 1045 (28000): Unknown error 1045,1045报错似乎是密码出错的问题,而根据教程步骤中,我所谓存在于err文件中的临时密码并不能起到任何作用,我采取了网上大部分所说的方法,在m.ini文件的mysqld下添加代码
skip-grant-tables
用于跳过授权表,本质上是进入数据库的安全模式无需密码就能登入,但似乎在没有设定用户专属密码的情况下不仅具有密码过期时间,在进行某些语句查询时,系统还是会报错,所以这并不是一个长久之计,最终还是得实现密码的更改,而当我试图使用
update user set password=password("123456") where user="root"
来更新我的密码时,系统又一次报错,从而更改失败,而网页上(包括第一个教程)大部分采用的都是同样的更新方式。但是终于功夫不负有心人,在我的系统报错中只是简单的给出了错误编码,而并没有给出错误阐述,而在查到的文字中ERROR 1064 (42000),被描述为“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right”,从而得知是语法上的错误,并且同时我才了解到在mysql 因为版本不同而支持修改密码的语法也不同的问题,5.7 以上版本,password 的字段被设置为了authentication_string,所以我的更新才会出错,无法进行,遂将命令语句更新为:
update mysql.user set authentication_string=password('123456') where User="root" and Host="localhost"
完成了密码的更新,最后将my.ini配置文件中所添加的语句删除,mysql便能正常连接和使用了。