分类: Mysql/postgreSQL
2014-06-23 16:51:38
每个Mysql的服务都可为独立的,所以它都调用一个my.cnf中各自不同的启动选项–就是下文中将提到的GNR值,使用不同的端口,生成各自的套接文件,服务的数据库都是独立的。
所需要的准备有:(其实都是现成的)
1.只需要安装一套mysql的服务器软件就ok
2.需要有mysqld_multi
3.需要修改/etc/my.cnf
1 cd /etc/
2 sudo vi my.cnf
修改my.cnf文件 :
1 填写下面配置 :
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi
password = multips
log = /usr/local/mysql/etc/mysqld_multi.log
[mysqld1]
user = mysql
port = 3307
socket = /tmp/mysql.sock2
datadir = /usr/local/mysql/var2
pid-file = /usr/local/mysql/var2/hostname.pid2
log-err = /usr/local/log/log-3307.err
log = /usr/local/log
language = /usr/local/mysql/share/mysql/english
#skip-locking
character_set_server = utf8
[mysqld2]
user = mysql
port = 3308
socket = /tmp/mysql.sock3
datadir =
pid-file = /usr/local/mysql/var3/hostname.pid3
log-err = /usr/local/log/log-3308.err
log = /usr/local/log
language = /usr/local/mysql/share/mysql/english
#skip-locking
character_set_server = utf8
2 将以下内容注释掉
# The following options will be passed to all MySQL clients
# [client]
# password = your_password
# port = 3306
# socket = /tmp/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
# [mysqld]
# port = 3306
# socket = /tmp/mysql.sock
# skip-locking
# key_buffer_size = 16M
# max_allowed_packet = 1M
# table_open_cache = 64
# sort_buffer_size = 512K
# net_buffer_length = 8K
# read_buffer_size = 256K
# read_rnd_buffer_size = 512K
# myisam_sort_buffer_size = 8M
3 在/usr/local/mysql/ 目录下创建 var2 var3 两个目录
1 cd /usr/local/mysql/
2 mkdir var2
3 mkdir var3
4 查看mysqld_multi文件
1 cd /usr/local/mysql/bin
2 ls mysqld_multi
2 more mysqld_multi
启动实例
sudo /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 1
sudo /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf start 2
查看实例是否启动
sudo /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf report 1
停止实例:
sudo /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf stop 1
sudo /usr/local/mysql/bin/mysqld_multi --defaults-extra-file=/etc/my.cnf stop 2
注 :使用方法:# mysqld_multi [options] {start|stop|report} [GNR[,GNR]…]
例 :sudo /usr/bin/mysqld_multi --config-file=/home/client/conf/my.cnf start 1-n 启动n个实例
start,stop和report是指你想到执行的操作。你可以在单独的服务或是多服务上指定一个操作,区别于选项后面的GNR列表。如果没有指定GNR列表,那么mysqld_multi将在所有的服务中根据选项文件进行操作。
每一个GNR的值是组的序列号或是一个组的序列号范围。此项的值必须是组名字最后的数字,比如说如果组名为mysqld17,那么此项的值则为 17.如果指定一个范围,使用”-”(破折号)来连接二个数字。如GNR的值为10-13,则指组mysqld10到组mysqld13。多个组或是组范 围可以在命令行中指定,使用”,”(逗号)隔开。不能有空白的字符(如空格或tab),在空白字符后面的参数将会被忽略。
连接进入指定的mysql服务器 进入不同实例
mysql --socket=/tmp/mysql.sock3 -uroot
数据库表创建略
权限设置
1 use mysql ;
2 insert into mysql.user(Host,User,Password) values(‘192.168.103.88’,’admin’,’1234567’);
3 identified by ‘1234567’;
4 flush privileges;
注 :
grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,
reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all
privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。‘连接口令’不能为空,否则创建失败。
GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
该账户只用于从本机连接。授予了RELOAD和PROCESS管理权限。这些权限允许admin用户执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-xxx命令,以及mysqladmin
processlist。未授予访问数据库的权限。你可以通过GRANT语句添加此类权限。
mysql> GRANT USAGE ON *.* TO 'dummy'@'localhost';
一个账户有用户名dummy,没有密码。该账户只用于从本机连接。未授予权限。通过GRANT语句中的USAGE权限,你可以创建账户而不授予任何权限。它可以将所有全局权限设为'N'。假定你将在以后将具体权限授予该账户。
取消某些用户权限 :
从192.168.103.88 上远程连接
命令:mysql –uadmin –P3307 –p –h192.168.103.212
mysql –uadmin –P3308 –p –h192.168.103.212
即可进入查看两个不同实例
mysql -uroot -S/home/client/data/mysql_3307/mysqld.sock