先贴上my.cnf
[mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user =root password =123456 [mysqld2] socket = /tmp/mysql.sock2 port = 3306 pid-file = /home/mysql/mysql2/hostname.pid2 datadir = /home/mysql/mysql2 user =mysql log-bin = /home/mysql/mysql2/binlog log-error = /home/log/mysql2.log [mysqld3] socket = /tmp/mysql.sock3 port = 3307 pid-file = /home/mysql/mysql3/hostname.pid3 datadir = /home/mysql/mysql3 user =mysql log-bin = /home/mysql/mysql3/binlog log-error = /home/log/mysql3.log
my.cnf 参数解析
注意mysqld 以及mysqladmin的位置,是安装的mysql的位置,目录下要有mysqld_safe 和 mysqladmin
user和password的用处暂时不清楚
[mysqld2]以及[mysqld3]可以通过修改数字,添加更多的实例,同时数字2,3也是开启实例的标志符号
socket 以及 port 是定义进入不同数据库实例的凭据,之后登陆会用到
pid-file 作用不明,但不同实例的目录要不一样
datadir是数据存放地点,最好是存储空间较大的目录下
user一般默认mysql [猜测是数据库自动操作时使用的系统账号,比如读写数据等]
log-bin log-error 数据库变更信息文件,数据库错误信息文件,在做主从或者主主数据库复制的时候需要用到log-bin
log-bin log-error datadir pid-file socket在各个实例配置中需要保证唯一,也就是互不相同
datadir log-error log-bin等目录需要自己手动新建[如果不存在的话] ,并且将权限赋值给user[这里是mysql]
datadir 需要在终端调用mysql_install_db --datadir=‘/你的路径‘ --user=‘你的用户[这里是mysql]‘
如果找不到mysql_instal_db 那么可能是未添加mysql到环境变量中,需要添加mysql的安装路径到环境变量,使用 export 语句,该工具与mysqld_multi mysqld_safe 在同一个目录
mysql的安装路径,要看各自的机器,一般是/usr/bin 或者/usr/local/mysql/bin ,只要能够在目录下找到mysql_install_db,mysqld_safe 这几个文件,基本就可以确定是mysql的路径了。
开启实例
配置好my.cnf 添加好各个实例的数据文件并赋予user[这里是mysql]目录权限[通过chown -r 用户名.群组名 文件名],确认端口未被占用,应该就可以打开实例了
打开实例用到:mysqld_mutil
直接输入命令可以查看具体用法,
主要用到的有 mysqld_mutil -start [id] [id] 可以是 2,3(打开[mysqld2] 和 [mysqld3]) 2(仅[mysqld2]) 2-5(打开 [mysqld2] 到 [mysqld5])
这里就用到了之前的标示符了,通过这个命令可以启动 批量 或者 单个 实例
mysqld_mutil report 该命令用来查看各个实例状态,如果看到一下两行,就说明启动了,英文还是很好理解的
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
如果一切正常,可以看到log-bin log-error sock等文件都出来了,并且对应端口也被mysqld占用,端口查看用到netstat 命令
多实例开启后,登陆需要使用 mysql -u[用户名] -p[密码,可以先不输入等待系统提醒后输入] -S[sock 配置文件中的sock文件] -P[端口号] (注意大小写[]要去掉)
ex-> mysql -uroot -p -S/tmp/mysql.sock2 -P3306
因为是多个实例,所以不能像单个实例那样 直接mysql -u -p 了,需要有标志性的区别符号,也就是之前定义的 sock 或者 指定端口
然后输入密码,你可能会发现,不管用什么账号,密码,都无法进入数据库,或者进入后没有各种权限,
这个时候你需要第一次初始化root账号 mysqladmin -S[sock] password "来一个初始密码~" 设置完后应该就可以用root账号登陆了
简单用户操作
之后的操作,比如
添加数据库 create database [database 名字];
显示所有数据库 show databases;
使用某个数据库 use [database 名字];
新建账号 create user ‘user name‘@‘host‘ identified by ‘用户密码‘
(host 是允许的客服端访问身份,可以是指定ip地址 , localhost仅本机 , % [%表示所有的访问地址都接受],或者192.168.1.% 这样的ip段)
用户密码 用户名 host 三个组成一个primary key 这些数据可以再mysql.user表中查看 ,所以其实也可以直接操作 mysql.user 表来添加用户(具体网上有-简直废话)
新建账号,并给与权限-这个比单纯的新建账号好用多了 grant select,delete,update,insert on *.* to ‘user name‘@‘host‘ identified by ‘key‘
其中 select,delete 等 是权限, 其他类似权限 比如 all privileges
*.*表示权限的对象是数据库的 ,当然也可以指定权限对象是单一数据库 如 test.* 表示用户只能查看test这个表[并不清楚为什么一定是test.* 而不是直接 test]
host 和之前的一样,如果所有地址的访问都接受,那么就用 %
设置完权限后记得要 flush privileges; 否则可能会无法正常使用账号
删除用户:delete from mysql.user where user =‘user name‘
结果删除的时候还是用到了这张表。。
设置完权限后记得要 flush privileges;
-master-slave -主从服务器搭建 [想歪的面壁去]
http://www.mike.org.cn/articles/mysql-master-slave-sync-conf-detail/