8:账户管理&主从同步配置

四、账户管理, 在 第一节课中的7.3已经展示过基本的账户管理

4.1、基本的了解

在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud

MySQL账户体系:根据账户所具有的权限的不同,MySQL的账户可以分为以下几种

服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表

数据库级别账号:对特定数据库执行增删改查的所有操作

数据表级别账号:对特定表执行增删改查等所有操作

字段级别的权限:对某些表的特定字段进行操作

存储程序级别的账号:对存储程序进行增删改查的操作

账户的操作主要包括 创建账户、删除账户、修改密码、授权权限 等

4.2、授予权限

需要使用实例级账户登录后操作,以root为例,主要操作包括:查看所有用户、修改密码、删除用户,具体的每一个下面会介绍

<1>、查看所有用户

所有用户及权限信息存储在mysql数据库的user表中

查看user表的结构:user 表在 mysql 数据库里面

主要字段说明:

Host表示允许访问的主机

User表示用户名

authentication_string表示密码,为加密后的值

查看所有用户

select user,authentication_string,host from user;

<2>、创建账户、授权

需要使用实例级账户登录后操作,以root为例,也就是创建账户要用 root用户登录

常用权限 主要包括:create、alter、drop、insert、update、delete、select

如果分配所有权限,可以使用 all privileges

(1)、创建账户 & 授权

mysql> grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

提示:权限列表如果是多个可以写:create,alter,drop,用逗号隔开;访问主机:指的是主机的IP,可以用 本地:localhost,也可以 % 表示任何电脑可登陆

例如:创建一个 test5 的用户,给他 jing_dong 库中所有表的select 的权限,并且可以在任何电脑登录:%,密码给他设置为 123456

step1: 用root用户登录

mysql -u root -p

输入密码进入

或者

mysql -u root -p密码

step2: 真正的创建用户并授予查询(select)权限

mysql> grant select on jing_dong.* to test5@'%' identified by '123456';

提示:

可以操作python数据库jing_dong里面所有表,方式为:jing_dong.*

访问主机通常使用百分号%表示此账户可以使用任何ip的主机登录访问此数据库

访问主机可以设置成localhost或具体的ip,表示只允许本机或特定主机访问

查看用户有哪些权限

show grants for test5@'%';,如果不是%就该为其他的如:'localhost'或者具体的ip:'ip'

step3: 退出root的登录

输入exit或quit或\q,按下回车退出, 或者control+D退出

step4: 使用test5账户登录,密码:123456

mysql -u test5 -p123456

4.3、账户操作

提示:下面的操作要使用 root 用户登录

<1>、修改权限:有关下面代码参数的含义可参考上面,其实也就是多了 with grant option;

grant 权限名称 on 数据库名 to 账户@主机withgrant option;

例如:给 test5 用户增加一个 update 权限

grant select,update on jing_dong.* to test5@'%' with grant option;

更新修改后的权限

flush privileges;

<2>、上面给用户增加了 update 的权限,也就是可以更新jing_dong 库中所有表的权限了

登录上 test5 的账号,打开goods表

// 登录 test5 账号

mysql -u test5 -p123456

// 使用 jing_dong 库

use jing_dong;

// 查询 goods 表的信息

select * from goods;

修改 r510vc 15.6英寸游戏本 为 华为 10.1英寸笔记本

update goods set name='华为 10.1英寸笔记本' where id=1;

<3>、修改账户密码

使用root登录,修改mysql数据库的user表

使用password()函数进行密码加密

update user set authentication_string=password('新密码') where user='用户名';

例如:

update user set authentication_string=password('456123') where user='test5';

注意修改完成后需要刷新权限

flush privileges

<4>、 删除账户

语法1:使用root登录

drop user '用户名'@'主机';

例:

drop user 'test5'@'%';

语法2:使用root登录,删除mysql数据库的user表中数据

delete from user where user='用户名';

例:

delete from user where user='laowang';

操作结束之后需要刷新权限

flush privileges

提示:推荐使用语法1删除用户, 如果使用语法1删除失败,采用语法2方式

<5>、 忘记 root 账户密码怎么办

root 账户一般归老大管,我们不需要操作,除非你是老大😋

加入忘记了,到时候再来查

五、MySQL主从同步配置

5.1、主从同步的定义

主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。

使用主从同步的好处:

通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。

提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据

在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能

5.2、主从同步的机制

Mysql服务器之间的主从同步是基于二进制日志机制,主服务器使用二进制日志来记录数据库的变动情况,从服务器通过读取和执行该日志文件来保持和主服务器的数据一致。

在使用二进制日志时,主服务器的所有操作都会被记录下来,然后从服务器会接收到该日志的一个副本。从服务器可以指定执行该日志中的哪一类事件(譬如只插入数据或者只更新数据),默认会执行日志中的所有语句。

每一个从服务器会记录关于二进制日志的信息:文件名和已经处理过的语句,这样意味着不同的从服务器可以分别执行同一个二进制日志的不同部分,并且从服务器可以随时连接或者中断和服务器的连接。

主服务器和每一个从服务器都必须配置一个唯一的ID号(在my.cnf文件的[mysqld]模块下有一个server-id配置项),另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址,日志文件名称和该日志里面的位置(这些信息存储在主服务器的数据库里)

5.3、配置主从同步的基本步骤

<1>、在主服务器上,必须开启二进制日志机制和配置一个独立的ID

<2>、在每一个从服务器上,配置一个唯一的ID,创建一个用来专门复制主服务器数据的账号

<3>、在开始复制进程前,在主服务器上记录二进制文件的位置信息

<4>、如果在开始复制之前,数据库中已经有数据,就必须先创建一个数据快照(可以使用mysqldump导出数据库,或者直接复制数据文件)

<5>、配置从服务器要连接的主服务器的IP地址和登陆授权,二进制日志文件名和位置

5.4、详细配置主从同步的方法

5.4.1、备份主服务器原有数据到从服务器,如果在设置主从同步前,主服务器上已有大量数据,可以使用mysqldump进行数据备份并还原到从服务器以实现数据的复制。

<1>、在阿里云主服务器上进行备份,执行命令:

mysqldump -u 用户名 -p密码 数据库名 --lock-all-tables > ~/master_db.sql

说明

-u :用户名

-p :示密码

--all-databases :导出所有数据库,如果要指定某个库可以直接改为 库名就好

--lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改

~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定

例如:把数据 jing_dong 在另外一台服务器进行备份(也就是设置一个从服务器)

mysqldump -uroot -p456123love jing_dong --lock-all-tables > ~/master_jing_dong_db.sql

<2>、在在另外一台阿里云服务器(从服务器)上进行数据还原

先把在 主服务器 上备份的数据导入到 从服务器

使用root账号登录上从服务器后

ssh -p 22 root@IP

远程服务主服务器备份的文件:master_jing_dong_db.sql,复制过去的文件名字叫:slave_jing_dong_db.sql,下面的ironman.ren是我的ip对应的域名

scp-P22root@ironman.ren:master_jing_dong_db.sql slave_jing_dong_db.sql

创建 jing_dong 数据库

create database jing_dong charset=utf8;

把刚才在处服务器备份出来的数据还原到 从服务器的数据库 jing_dong 里面

语法:mysql –u root –p密码 数据库名 < 备份的sql文件,如下

mysql –u root –p123456 jing_dong < slave_jing_dong_db.sql

5.4.2、配置主服务器master

(1)、编辑设置mysqld的配置文件,设置log_bin和server-id

vim /etc/my.cnf

(2)、重启mysql服务

sudo service mysql restart

(3)、登入主服务器中的mysql,创建用于从服务器同步数据使用的帐号

// 登录 mysql 的 root 用户

mysql –uroot –p密码

// 创建用于从服务器同步数据使用的帐号,权限是数据库的所有权限

GRANT REPLICATION SLAVE on *.* to slave@'%' identified by '123456';

// 刷新权限

FLUSH PRIVILEGES;

(4)、获取主服务器的二进制日志信息(查看创建后的状态) ,待会在从服务器要用到

show master status;

5.4.3、配置从服务器slave(我这里是在Linux下测试的)

(1)、编辑设置mysqld的配置文件,设置log_bin和server-id

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

(2)、重启mysql服务

sudo service mysql restart

(3)、登入主服务器中的mysql创建用于从服务器同步数据使用的帐号

change master to master_host='ironman.ren', master_user='slave', master_password='123456',master_log_file='mysql-bin.000001', master_log_pos=120;

提示:各个参数的解释

master_host :ironman.ren 是 主服务器的域名,你也可以使用IP

master_user :slave: 在主服务器创建的用于从服务器登录主服务器mysql的账号,在上面5.4.3中的(3)创建的

master_password :123456: 密码,在上面5.4.3中的(3)创建的

master_log_file :mysql-bin.000001 上面5.4.3中的(3)创建账号的时候生成的,看 5.4.3中的(4)查看的结果 ,也就是:前面查询到的主服务器日志文件名

master_log_pos:120: 上面5.4.3中的(3)创建账号的时候生成的,看 5.4.3中的(4)查看的结果 ,也就是:前面查询到的主服务器日志文件位置

5.4.4、测试主从同步

在做完上面的配置后,主从同步已经设置好了,那么下面我们进行测试,在主服务器的 jing_dong里面的goods表修改最后一条数据,把 商务双肩背包3 改为 商务包



参考博客一:linux开启MySQL binlog日志


作者:IIronMan

链接:https://www.jianshu.com/p/127c479a4265

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容