mysql权限和配置主从数据库

来源:互联网 发布:健康网络的宣传语 编辑:程序博客网 时间:2024/04/29 17:46

mysql 权限分析:

2个库 User, DB,

user表有39个字段。这些字段可以分为4类:

用户列;
权限列;
安全列;
资源控制列;
  1、用户列

  用户列包括Host、User、Password,分别表示主机名、用户名和密码。登录用的就是这个用户名与密码;

Host中 加(% 表示任何ip都可以)

  2、权限列

  user表的权限列包括Select_priv、Insert_priv等以priv结尾的字段。

  这些字段的值只有Y和N。Y表示该权限可以用到所有数据库上;N表示该权限不能用到所有数据库上;(记住 是所有库!对比DB 是受限和库)

  通常,可以使用GRANT语句Wie用户赋予一些权限,也可以通过Update语句更新user表的方式来设置权限;

  不过,修改user表之后,一定要执行一下FLUSH PRIVILEGES,否则可能会出现如下错误:
列 说明
Select_priv 确定用户是否可以通过SELECT命令选择数据
Insert_priv 确定用户是否可以通过INSERT命令插入数据
Update_priv 确定用户是否可以通过UPDATE命令修改现有数据
Delete_priv 确定用户是否可以通过DELETE命令删除现有数据
Create_priv 确定用户是否可以创建新的数据库和表
Drop_priv 确定用户是否可以删除现有数据库和表
Reload_priv 确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表
Shutdown_priv 确定用户是否可以关闭MySQL服务器。在将此权限提供给root账户之外的任何用户时,都应当非常谨慎
Process_priv 确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程
File_priv 确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令
Grant_priv 确定用户是否可以将已经授予给该用户自己的权限再授予其他用户
References_priv 目前只是某些未来功能的占位符;现在没有作用
Index_priv 确定用户是否可以创建和删除表索引
Alter_priv 确定用户是否可以重命名和修改表结构
Show_db_priv 确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库
Super_priv
确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令

Create_tmp_table_priv 确定用户是否可以创建临时表
Lock_tables_priv 确定用户是否可以使用LOCK TABLES命令阻止对表的访问/修改
Execute_priv 确定用户是否可以执行存储过程
Repl_slave_priv 确定用户是否可以读取用于维护复制数据库环境的二进制日志文件。此用户位于主系统中,有利于主机和客户机之间的通信
Repl_client_priv 确定用户是否可以确定复制从服务器和主服务器的位置
Create_view_priv 确定用户是否可以创建视图
Show_view_priv 确定用户是否可以查看视图或了解视图如何执行
Create_routine_priv 确定用户是否可以更改或放弃存储过程和函数
Alter_routine_priv 确定用户是否可以修改或删除存储函数及函数
Create_user_priv 确定用户是否可以执行CREATE USER命令,这个命令用于创建新的MySQL账户
Event_priv 确定用户能否创建、修改和删除事件
Trigger_priv 确定用户能否创建和删除触发器

例子

GRANT ALL ON test.* to ‘cqfyxcom’@’%’ identified by ‘123456’;

GRANT priv_type [(column_list)] ON database.table
TO user [IDENTIFIED BY [PASSWORD] ‘password’]
[,user [IDENTIFIED BY [PASSWORD] ‘password’]]…
WITH with_option[with_option]

priv_type参数表示权限类型;
column_list:参数表示权限作用于哪些列上,没设置则位于整个表上;
database.table:具体的访问的表(test.* 表示数据库test下面的所有表都有权限)
user参数由用户名和主机名构成;形式是“‘username’@’hostname’”;
IDENTIFIED BY参数用于为用户设置密码;
password:用户新密码

删除DROP USER ‘newuser1’@’%’

UPDATE mysql.user SET Password =password(‘rootpwd’) WHERE User=’root’ and Host=’localhost’

主从模式:
MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器的日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。单向复制有利于健壮性、速度和系统管理:•主服务器/从服务器设置增加了健壮性。主服务器出现问题时,你可以切换到从服务器作备份。•通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间。SELECT查询可以发送到从服务器以降低主服务器的查询处理负荷。但修改数据的语句仍然应发送到主服务器,以便主服务器和从服务器保持同步。如果非更新查询为主,该负载均衡策略很有效,但一般是更新查询。•使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。在备份过程中主服务器可以继续处理更新。

MySQL提供了数据库的同步功能,这对我们事先数据库的容灾、备份、恢复、负载均衡等都是有极大帮助的。

linux

master:114.215.85.234
slave:101.200.179.190

1 主:
1 添加账号,从机访问的账号和权限 GRANT ALL ON test.* to ‘cqfyxcom’@’%’ identified by ‘123456’; test.*下面的所有权限 账号cqfyxcom所有ip都可以!密码123456
2

1 [root@node2 mysql]# vi my.cnf //编辑配置文件增加以下内容
2 log-bin=mysql-bin //启动二进制日志系统
3 binlog-do-db=node1
4 binlog-do-db=node2 //二进制需要同步的数据库名 如果有多个数据库,每个数据库一行
5 server-id = 1 //本机数据库ID
6 log-bin=/var/log/mysql/updatelog //设定生成log文件名,这里的路径没有mysql目录要手动创建并给于它mysql用户的权限
7 binlog-ignore-db=mysql //避免同步mysql用户配置,以免不必要的麻烦

网上的:
1 mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON . TO ‘replication’@’192.168.1.151’ IDENTIFIED BY ‘123456’;
2 Query OK, 0 rows affected (0.00 sec) //给从服务器用户replication 的同步权限

重启

show master status;

mysql> show master status;
55 +——————+———-+————–+——————+
56 | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
57 +——————+———-+————–+——————+
58 | updatelog.000001 | 107 | node1,node2 | mysql |

记录 Position值 等一下 从机需要配置 master_log_pos
change master to master_host=’114.215.85.234’,master_user=’cqfyxcom’,master_password=’123456’,master_log_file=’mysql-bin.000002’,master_log_pos=4963;

从:
配置 my.cnf
log-bin=mysql-bin
server-id=2
relay_log = mysql-relay-bin //中转日记 从机的丛机
log_slave_updates = 1 //从日记是否更新
read_only = 1
replicate-ignore-db=mysql //屏蔽对mysql库的同步,以免有麻烦
replicate-do-db=node1 //同步数据库名称

先配置日记

change master to master_host=’114.215.85.234’,master_user=’cqfyxcom’,master_password=’123456’,master_log_file=’mysql-bin.000002’,master_log_pos=4963;

开启slave start;

然后 show slave status\G;

观察
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

同步完成!!! 主机的操作 会在从机上面反映出来!

如果 同步失败!! 先stop slave 然后 主机看记录 Position值 再执行 change master to master_host=’114.215.85.234’,master_user=’cqfyxcom’,master_password=’123456’,master_log_file=’mysql-bin.000002’,master_log_pos=填写现在的pos值;

然后开始start slave;

show slave status\G 同步完成

MySQL双向复制(主主模式)

环境:

A: 192.168.1.1 没有数据

B: 192.168.1.2 没有数据

在A的[mysqld]字段下增加:

auto-increment-increment = 2 (增长值) A上就会 1,3,5,7这样增长

auto-increment-offset = 1 (初始值)

在B的[mysqld]字段下增加:

auto-increment-increment = 2 (增长值) B上就会2,4,6,8这样增长

auto-increment-offset = 2 (初始值)

因为是双向备份,可能产生主键重复等问题,添加这两个参数防止主键重复

注意:server-id = 1 改成 server-id = 2

重启数据库

在A上

mysql> grant replication slave on . to ‘beifen’@’192.168.1.2’ identified by ‘123’; 创建 beifen用户,密码设置为123 并授权给192.168.1.2使用。

在B上

mysql> grant replication slave on . to ‘beifen’@’192.168.1.1’ identified by ‘123’; 创建 beifen用户,密码设置为123 并授权给192.168.1.1使用。

在A上:

查询主数据库的状态,并记下File和Position的值,

在B上

在A上:

mysql>change master to master_host=’192.168.1.2’,master_user=’beifen’,master_password=’123’,master_log_file=’mysql-bin.000016’ ,master_log_pos=106;

在B上:

mysql>change master to master_host=’192.168.1.1’,master_user=’beifen’,master_password=’123’,master_log_file=’mysql-bin.000010’ ,master_log_pos=257;

在A .、B上分别执行

启动slave同步

mysql > start slave;

在A、B上分别检查主从同步,如果您看到Slave_IO_Running和Slave_SQL_Running均为Yes,则主从复制连接正常。

mysql > show slave status\G

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2013-05/84811.htm

0 0
原创粉丝点击