# 配置phpmyadmin连接多实例MySQL
### 步骤总结
1. 下载phpmyadmin
2. 配置phpmysql的配置文件
3. 所有库有账号通过远程连接MySQL(mysql的grant授权)
4. 登录测试(如果有做数据库的主从要检查用户授权,防止数据的不一致)
### 环境说明
```
Linux版本于内核号 CentOS release 6.5 (Final) 2.6.32-431.el6.x86_64
PHP版本 5.3.28
Phpmyadmin版本 phpMyAdmin-4.4.15-all-languages
MySQL多实例 192.168.0.200:3307和192.168.0.200:3308(其中3307为master 3308为slave)
```
## 具体操作
### 方法一
通过修改 `phpmyadmin/libraries/config.default.php` 大概在805行的`$cfg['AllowArbitraryServer'] = true;` # allow login to any user entered server in cookie based authentication,效果如下图:
![](https://box.kancloud.cn/2015-10-25_562cf82323b60.png)
进行登录,当然这种方式依然得方法一中第四步的授权,这里就不在赘述。**(此方法测试未成功,继续关注)**
#### 总结
缺点:登陆操作比较繁琐,而且切换服务器时须首先退出当前所登陆的服务器
### 方法二
##### 1. 下载phpmyadmin
到`https://www.phpmyadmin.net/downloads/`下载`phpMyAdmin-4.4.15-all-languages`,解压到网站根目录下重命名为phpmyadmin
#### 2. 编辑配置文件
`cp config.sample.inc.php config.inc.php` 复制根目录下的`config.sample.inc.php`为`config.inc.php`,使用 `sed -i '22,34s#^#//#g'` config.inc.php使用sed命令注释掉之前相关行并编辑这个文件,添加一个$hosts数组和一个for循环
```
// /*
// * First server
// */
// $i++;
// /* Authentication type */
// $cfg['Servers'][$i]['auth_type'] = 'cookie';
// /* Server parameters */
// $cfg['Servers'][$i]['host'] = 'localhost';
// $cfg['Servers'][$i]['connect_type'] = 'tcp';
// $cfg['Servers'][$i]['compress'] = false;
// /* Select mysql if your server does not have mysqli */
// $cfg['Servers'][$i]['extension'] = 'mysqli';
// $cfg['Servers'][$i]['AllowNoPassword'] = false;
$hosts = array(
'1'=>array('host'=>'192.168.0.200','user'=>'phpmyadmin','password'=>'phpmyadmin','port'=>3307),
'2'=>array('host'=>'192.168.0.200','user'=>'phpmyadmin','password'=>'phpmyadmin','port'=>3308)
);
for($i=1,$j=count($hosts);$i<=$j;$i++){
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = $hosts[$i]['host']; //修改host
$cfg['Servers'][$i]['port'] = $hosts[$i]['port'];
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Servers'][$i]['user'] = $hosts[$i]['user']; //修改用户名
$cfg['Servers'][$i]['password'] = $hosts[$i]['password']; //密码
/* rajk - for blobstreaming */
$cfg['Servers'][$i]['bs_garbage_threshold'] = 50;
$cfg['Servers'][$i]['bs_repository_threshold'] = '32M';
$cfg['Servers'][$i]['bs_temp_blob_timeout'] = 600;
$cfg['Servers'][$i]['bs_temp_log_threshold'] = '32M';
}
```
更改完成后刷新登录页面,发现是不是多了些什么?我们可以选择不同的服务器(或者不同的端口)进行登录了。
![](https://box.kancloud.cn/2015-10-25_562cf8233cce5.png)
#### 3. 登录到服务器授权不同的登录账号
由于这边192.168.0.200:3307为master,我们在3307端口上进行授权:
`grant all privileges on *.* to 'phpmyadmin'@'192.168.0.%' identified by 'phpmyadmin' WITH GRANT OPTION;`
如果3307和3308已经实现了主从同步,那么我们可以通过用户名为phpmyadmin和密码为 phpmyadmin登录了,但是这样授权是十分不安全的。建议在生产环境中不要这么粗暴的使用,另外我们需要对slave实例进行回收权限,登录192.168.0.3308,操作如下:
`REVOKE INSERT,ALTER,CREATE,DELETE,DROP,UPDATE ON *.* FROM 'phpmyadmin'@'192.168.0.%'`
另可以通过show privileges;查看更多授权权限以及相关作用。
效果如下
![](https://box.kancloud.cn/2015-10-25_562cf8234ef5d.png)
相关的增删改操作提示无权限,防止用户误操作引起的主从同步数据的不一致。(这里也可以配置mysql库的主从不同步,然后分别在3307和3308端口上授予用户不同的权限即可)。
#### 总结
优点:登陆操作简便,登陆后切换服务器无须退出当前连接。
### 特别说明
方法一、方法二不可混用,如果按照方法一进行了操作,那么方法二将无法生效
- 写在前面
- MySQL的使用
- MySQL多表同时删除方案
- MySQL跨表、多表更新SQL语句总结
- MySQL存储引擎
- 安装
- 常规方式编译安装MySQL
- 采用cmake方式编译安装MySQL
- 使用rpm包安装MySQL
- 使用yum方式安装MySQL
- 采用二进制方式免编译安装MySQL
- 多实例的安装
- 什么是多实例
- 多实例的作用、问题以及应用场景
- 多实例安装01【推荐】
- 多实例官方安装方案02
- 启动、用户和权限管理
- 单实例MySQL的启动和关闭的方法
- 设置及修改MySQL root用户密码
- 找回丢失的MySQL root用户密码
- 创建MySQL用户及用户权限管理
- 基础命令的操作
- MySQL库和表相关操作
- MySQL中的索引操作
- MySQL常用命令
- MySQL的错误代码
- MySQL复习秘籍
- 备份与恢复
- 备份
- 恢复
- mysqlbinlog命令
- 服务日志
- 主从复制
- 主从复制部署配置问题汇总
- 主从复制读写分离
- 灾难恢复
- 配置phpmyadmin连接多实例MySQL
- 其他相关
- Sphinx实验
- 中文分词技术
- MySQL语句大全
- 用户创建、权限、删除
- 数据库与表显示、创建、删除
- 表复制及备份还原
- 数据库表中数据操作
- 修改表的列与表名
- 修改表中的数据
- 查询表
- 日志
- 批量修改Mysql表引擎为InnoDB的方法
- 数据库抽象层 PDO
- PDO对象常用方法
- PDO 事务处理
- PDO 与 MySQLi 二者效率简单比较
- 大小写敏感性 lower_case_table_names
- CentOS7安装MySQL5.7密码查看与修改