问题:本地MySQL和数据库管理的phpMyAdmin由于一年前的小白的自己不知道出于什么理由在D、E盘(现在使用中)分别装了集成环境AppServ导致启动了mysqld服务phpMyAdmin依然报类似mysqli_real_connect()等无法连接服务的错误,因为开发一直远程连接公司公用数据库服务器,没有理会。近期一个项目甲方提供的用户测试数据涉及到保密信息,领导要求只能在本地测试,所以下定决心解决一下这个坑。
MySQL(5.7)本地目录
D:\AppServ\MySQL
E:\AppServ\MySQL
解决过程(可能与我实际解决问题过程不一致,因为当时没有头绪看到一个错误就解决一个错误,现在重新整理思路):一、MySQL服务启动失败
由于之前本地服务器在D盘,现在使用E必然导致服务中的可执行文件路径和MySQL安装目录不一致,导致mysql服务启动失败,此时需要修改可执行路径。
解决方法:
1,CMD------regedit,打开注册表编辑器;
2,根据路径找到mysql注册表,HKEY_LOCAL_MACHINE----SYSTEM----CurrentControlSet----Services----mysql,修改ImagePath值为正确的路径;
3,运行mysql安装目录下的bin\mysqld.exe,接着再去CMD中(右键以管理员身份运行)启动mysql服务即可;
如果此时提示“服务无法启动 服务没有报告任何错误”,那一定是初始化的问题;
【在mysql5.7以上版本中默认没有一个data目录,即没有初始化服务。需要先初始化mysql才可以启动服务,否则会报 “服务没有报告任何错误”,启动失败】
4,CMD中(右键以管理员身份运行)在mysql的bin目录下执行mysqld --initialize-insecure (不设置root密码,建议使用)命令,第一次执行这个命令会等待的时间稍微长了一些,并且控制台没有任何返回结果。可以看到mysql的根目录下会多出一个data文件夹,里面一堆文件;
如果执行mysqld --initialize-insecure初始化命令的时候报如下错误,
原因就是MySQL没有先执行mysqld --initialize-insecure而是先执行net start mysql了,mysql会自动创建一个data文件夹,并在里面初始化一些文件,在再次执行mysqld - initialize的时候并没有把data文件夹删除,启动失败。
解决方法:查看mysql目录下的data文件夹,删除data中全部文件,若提示mysqld占用无法删除,打开任务管理器右键结束mysqld服务再次删除,然后如第4步开头所说执行mysqld - initializemysqld --initialize-insecure命令,再执行net start mysql命令重启mysql即可启动服务。
二、MySQL5.7初始密码及修改问题
输入“mysql或者mysql -hlocalhost -uroot -p”回车,出错“ERROR 1045 Access denied for user 'xxx' NO”
原因是新版的mysql5.7及以上版本为了安全性,默认是有密码的。解决方法:mysql默认安装会有密码生成,密码文件直接写在 mysql_error.txt日志文件(每个版本文件都不一样,在MySQL根目录下找找便能发现)中,MySQL5.7在安装完后,第一次启动时会生产一个随机的密码,找到登录即可。
如果不想找密码或者登录时报 Your password has expired. To log in you must change it using a client that supports expired passwor初始密码过期错误,那就一手把密码改了。
解决方法:
1.关闭正在运行的MySQL服务:net stop mysql;
2.输入:mysqld -nt --skip-grant-tables
然后回车,如果没有错误信息,就行了;
注:skip-grant-tables参数用了之后,就可以跳过登录校验;
3.再打开一个命令行(因为刚才那个DOS窗口已经不能动了),同样转到mysql的bin目录下;
4.直接输入 mysql 并回车,如果成功,将出现MySQL提示符 >
5.切换到mysql表
6.修改密码
MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list',原因是mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,运行上面命令回车即可。
7.刷新权限
三、phpMyAdmin配置
将下载的phpmyadmin压缩包解压到本地项目文件夹下,
打开libraries下的config.default.php文件依次找到下面各项,按照说明配置即可,
$cfg['PmaAbsoluteUri'] = '';这里填写phpmyadmin的访问网址:如改成$cfg['PmaAbsoluteUri'] = 'localhost/phpMyAdmin'
$cfg['Servers'][$i]['host'] = 'localhost';填写localhost或mysql所在服务器的ip地址,如果mysql和该phpmyadmin在同一服务器,则按默认localhost cfg['Servers'][$i]['port'] = ''; (mysql端口,如果是默认3306,保留为空即可 )
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user 访问phpmyadmin使用的mysql用户名 $cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed对应上述mysql用户名的密码
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = ''; 如果认证方法设置为cookie,就需要设置短语密码,置于设置为什么密码,由您自己决定 ,但是不能留空,否则会在登录phpmyadmin时提示错误
phpmyadmin在使用过程中经常出现“登陆超时(1440秒未活动),请重新登录”,很烦
解决方法: phpMyAdmin / libraries / config.default.php 文件,修改$cfg['LoginCookieValidity'] = 1440;
将1440修改成更大的值即可。(3600为1个小时)
浏览器 localhost/phpmyadmin root root 成功。
不再关心宇宙从哪来到哪去
只想低下头好好珍惜身边人的普普通程序员