这篇其实是编程无关的技术贴。

近期想接触学习一下PHP,手里的电脑是windows7系统的笔记本,懒得为了这点需要去装linux或者虚拟机搞火到不行的LAMP,找到了XAMPP,XAMPP是一个把Apache网页服务器PHPPerlMySQL集合在一起的安装包允许用户可以在自己的电脑上轻易的建立网页服务器

于是问题来了,之前搞JAVA EE时电脑上装了mysql5.1,但是XAMPP中也安装了mysql,版本是5.6,怎么保证在XAMPP的mysql使用正常的情况下,原先的JAVA EE的mysql也可以不出问题的使用呢。

这个问题需要保证以下两个关键点:第一、mysql端口号不能冲突;第二、两个MySQL服务不冲突。


说完原理,那么就来按步骤说一下解决方案。

1.修改mysql端口号:

    原先的5.1版已经占用了3306端口,并且许多项目已经连接了这个端口的数据库,为了避免改动原有项目,于是将XAMPP的MySQL端口号设置为3307。

    注意:3307是未被占用的端口号,在dos命令行下输入netstat -aon|findstr 3307 查看端口3307的被占用情况。也可以是3308等端口,只要未被占用即可。

    修改方式:

1)修改D:\xampp\mysql\bin目录下my.ini文件,如下port=3307:

[client] 
# password       = your_password 
port            = 3307 
socket          = "D:/xampp/mysql/mysql.sock"
# Here follows entries for some specific programs 
# The MySQL server
[mysqld]
port= 3307
socket = "D:/xampp/mysql/mysql.sock"

2) 修改D:\xampp\phpMyAdmin\libraries目录下config.default.php文件:

找到:

$cfg['Servers'][$i]['port'] = '';

改为:

$cfg['Servers'][$i]['port'] = '3307';

2.重设MySQL服务

MySQL在windows中以服务存在并运行,在XAMPP Control Panel中点击Services按钮打开系统服务,也可以在命令行中输入services.msc 打开。

在其中找到命名为MySQL的服务,这就是mysql旧版本5.1启动的服务,由于该服务的存在,XAMPP中启动MySQL会失败。处理方式是将之前的MySQL服务重命名,以保证两个MySQL都可以提供服务。

操作步骤如下:

1)管理员方式打开命令行,进入旧的MySQL路径C:\Program Files\MySQL\MySQL Server 5.1\bin

2)输入mysqld --remove,删除mysql服务。

3)输入mysqld --install MySQL5.1,新建一个名为MySQL5.1的服务,注意后面的MySQL5.1参数一定要有,如果直接mysqld --install会默认创建名为MySQL的服务。

这样,在XAMPP中再启动MySQL就可以成功执行了。

备注,如果你之前的MySQL服务名不是默认的,那么恭喜,“重设MySQL服务”这一步骤就不需要进行了。



打开localhost/phpmyadmin/路径,root登录成功。

启动一个原先的JAVA EE系统,没有问题。

以上。


===============================================

后续有了想法是在xampp上搭建WordPress,具体步骤网上有很多,例如

http://premium.wpmudev.org/blog/how-to-install-wordpress-locally-for-pcwindows-with-xampp/

http://blog.wpjam.com/article/installing-wordpress-locally/

但是按照网上所述的步骤出现问题,就是在phpmyadmin新建数据库作为WordPress的数据库,但是在配置时总是显示Can’t select database问题,而用原有默认的test数据库就没有问题。

尝试了许多办法,包括修改数据库名、编码、授权用户,都不能解决问题,还以为没法用自己创建的数据库搭建了。

突然灵光一显,想起之前修改了MySQL端口号,也许问题就在这里,于是修改WordPress下的wp-config.php文件中的DB_HOST值如下。

/** MySQL hostname */
define('DB_HOST', 'localhost:3307');

问题解决。之前只能用默认的数据库test、mysql等等,是因为连的是端口号为3306的数据库,也就是JAVA EE用的MySQL数据库。