先贴上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/

posted on 2015-07-30 10:47  海暗  阅读(375)  评论(0编辑  收藏  举报