以下配置过程除了percona安装部分,同样适应于多实例配置mysql
准备内容:
配置yum库,参考
http://www.percona.com/doc/percona-server/5.5/installation/yum_repo.html
用root用户登陆linux,数据库的linux用户为samp
安装配置
1.解压数据库压缩包
执行yum安装
yum install Percona-Server-client-55 Percona-Server-server-55
PS:也可以下载二进制压缩包,解压,使用 make && make install 安装
可以参考 http://chenzehe.iteye.com/blog/1266260
安装后数据库目录
/var/lib/mysql
配置文件目录
/usr/share/mysql
bin目录
/usr/bin
2.建立端口为3311的实例的数据库数据目录,并初始化
数据目录
/u01/samp/data/percona3311
分配目录权限给samp
chown -R samp /u01/samp/data/percona3311
初始化数据库目录
mysql_install_db --datadir=/u01/samp/data/percona3311 --user=samp
3.根据服务器的情况,选择默认配置文件,我选择 my-medium.cnf 作为配置文件
复制一份配置文件,命名为my.cnf
cp my-medium.cnf my.cnf
修改 my.cnf
vi my.cnf
修改后配置如下
[client]
user = root
password = 123
# Here follows entries for some specific programs
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
[mysqld3311]
socket = /var/lib/mysql/mysql3311.sock
port = 3311
datadir = /u01/samp/data/percona3311
pid-file = /var/lib/mysql/hostname.pid3311
user = samp
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
4.启动mysql3311实例,我们使用mysqld_multi实现,mysqld_multi的参数请在网上搜索
日志将保存到指定文件/u01/mysqld_multi_log.txt,方便出错查看
mysqld_multi --defaults-file=/usr/share/mysql/my.cnf --log=/u01/mysqld_multi_log.txt start 3311
这个时候输入
mysqld_multi --defaults-file=/usr/share/mysql/my.cnf --log=/u01/mysqld_multi_log.txt report
应该得到以下回应,如果没有成功运行,查看日志文件
Reporting MySQL (Percona Server) servers MySQL (Percona Server) from group: mysqld3311 is runnin
3311启动完成了,那么是不是就能远程连接呢,我不能,遇到以下错误
XXX is not allowed to connect to this MySql server
原因是由于mysql的mysql数据库的user用户表配置访问权限造成的,
解决方法:
本地命令进入mysql
mysql -uroot -p -h127.0.0.1 -P3311 mysql> use mysql; mysql>update user set host = '%' where user ='root'; mysql>flush privileges;
删除其他匿名用户
mysql>delete user where user ='';
更新root用户密码,设置为123
mysql>UPDATE user SET Password=PASSWORD('123') WHERE user='root';
这时候应该可以远程登陆了。
PS:如果因为数据库配置错误连本地mysql都不能连上
那么,先删除数据库数据库目录并重新建立
/u01/samp/data/percona3311
然后使用
ps -ef |grep mysql
把mysql的所有进程找出并kill掉,重新做一次之前的步骤