小编给大家分享一下MySQL数据库服务器如何初始化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
风险性操作命令被强迫隐含重改写
1) Shell命令rm:不管你输入的rm 后面为何参数,都会隐形地转为 rm –i 命令执行;
2) Shell命令cp:不管你输入的cp 后面为何参数,都会隐形地转为 cp –i 命令执行;
3) Shell命令mv:不管你输入的mv后面为何参数,都会隐形地转为 mv –i 命令执行;
修改每个操作系统级别帐号默认配置的隐藏文件bash_profile的内容,实现上述3个命令的隐形修改,同时也可能增加路径和提示等其他信息,具体的详细信息可以参考文章设置Linux系统的环境变量方式,减少悲剧操作的发生。
服务器名称
主机名称要能包含三部分信息:服务器所在的机房名称、应用名称、集群中的代号。另外,为方便统一管理,与其他兄弟部门交流和合作,改变过去自成章法的做 法,而制定严格的格式要求,三部分的连接符合统一为中划线“-”,举例说明:xy-brmms-db1a、xy-brmms-db1b、xy- brmms-db2a、xy-brmms-db2b….
其中,db1a和db1b表示一对互为主备的主从复制关系,集群中有多台服务器支持数据服务,则最后二位的数字和字母会相应变化而体现出来。
ITIL流程单提交
1) 域名申请:若应用程序访问数据库服务器的方式,是通过域名而非IP地址的时候,则需要提交ITIL流程单,并且指定为SA部门的***同事,一般会在2个小时内处理,故需要提前申请准备好;
2) 服务器的IP地址变更:若想更改数据库服务器的IP地址,包含做VIP用处的IP地址,则需要提交ITIL流程单,并且指定为网络部门的***同事,此需求一般会及时响应,但依然建议提前填写;
3) 服务器访问安全列表增加:待服务器所有的配置工作都完成之后,通过向安全部门提交ITIL流程单方式,要求描述清楚:服务器的IP地址信息(备注:需要用 到VIP或域名的,也需要一并描述清楚),主机的名称,那个组的成员或个人需要访问此服务器,并且描述清楚各自需要拥有的权限,以及默认登录的帐号名称 (一般默认为:admin);
MySQL软件包安装
鉴于我们使用MySQL开源软件的社区版本产品,其测试和验证过 程主要依赖社区的用户和开源贡献者完成,即使商业产品也不能盲目使用最新发布的版本,另外使用的版本必须经过我们做过一定量针对性的测试,以及开发环境或 性能测试环境验证过,为此推荐使用版本:5.1.34、5.1.36、5.1.40,若是想使用Plugin-innodb,则推荐使用版 本:mysql-5.1.48,暂不推荐生产环境使用版本:mysql 5.5.*系列。
以mysql 5.1.40版本为例,安装的软件包为:
1 2 3 4 | MySQL-server-community-5.1.40-0.rhel5.x86_64.rpm MySQL-shared-community-5.1.40-0.rhel5.x86_64.rpm MySQL-client-community-5.1.40-0.rhel5.x86_64.rpm MySQL-devel-community-5.1.40-0.rhel5.x86_64.rpm |
MySQL数据库的初始化
1) 主备服务器都优先增加用于复制的帐
GRANT REPLICATION SLAVE ON *.* TO ‘repl’@'%’ IDENTIFIED BY ’XXXXXXXXXXXXXXXXXX’; |
2) 待主主复制搭建完成后,任选一台主机执行其他初始化操作
初始化root帐号的信息:
DELETE FROM mysql. user WHERE user =” OR host=”;
UPDATE mysql. user SET password = PASSWORD (‘XXXXXXXXXXXXXXXX’) WHERE user =’root’; FLUSH PRIVILEGES ; |
创建用于监控的数据库信息:
CREATE DATABASE `monitor` CHARACTER SET utf8 COLLATE utf8_general_ci; USE monitor; CREATE TABLE `xdual` ( `id` int (11) NOT NULL AUTO_INCREMENT, `x` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP , PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE =utf8_general_ci; INSERT INTO xdual(x) VALUES (NOW()); |
创建用于管理、监控和本地备份的帐号信息:
GRANT SUPER,PROCESS,FILE, SELECT ON *.* TO ‘admin’@ 'localhost’ IDENTIFIED BY’XXXXXXXXXXXXXXXXX’; GRANT UPDATE ON monitor.* TO ‘admin’@' localhost’; |
创建用于只读应用场景的帐号(比如:数据仓库):
ANT SELECT ON stanley.* TO ‘rnd’@'%’ IDENTIFIED BY ’XXXXXXXXXXXXXXXX’; |
增加应用程序和DBA操作对应库的帐号信息:
GRANT SELECT , INSERT , UPDATE , DELETE ON stanley.* TO ‘stanley’@ '%’ IDENTIFIED BY’XXXXXXXX’; GRANT ALL ON stanley.* TO ‘stanley’@' localhost’ IDENTIFIED BY ’XXXXXXXXXXXXXXXX’; |
备注:
DBA人员访问mysql数据库服务器完成具体工作时,必须尽量使用对应权限的帐号,而不能一味使用最高权限帐号root,虽然此举可能带来成本上升,却可以减少误操作事件的发生概率,以及降低误操作影响范围。
MySQL复制搭建
因新安装的数据库服务器,还未跑任何应用,只是2台主机都创建了一个一样属性的数据库帐号信息而已,为此没有必要执行数据库备份的方式用于搭建复制,简单描述如下(备注:以xy-brmms-db1a和xy-brmms-db1b为例):
(1) 主机xy-brmms-db1a上执行SQL命令:SHOW MASTER STATUS;
(2) 主机xy-brmms-db1b上执行SQL命令:
CHANGE MASTER TO master_host=’172.22.32.88′,master_user=’repl’,master_password=’XXXXXXXXXXXXXXXX’, master_log_file=’mysql-bin.000006′,master_log_pos=2256; START SLAVE; |
(3) 主机xy-brmms-db1b上执行SQL命令:SHOW SLAVE STATUS;根据输出信息判断是否xy-brmms-db1a->xy-brmms-db1b方向的复制是否成功;
(4) 通过上述3个步骤完成xy-brmms-db1a->xy-brmms-db1b的复制,接下来重复上述3个步骤,替换相关信息,能完成xy-brmms-db1b->xy-brmms-db1a的复制;
备注:
MySQL生产环境可能碰到的场景,需要搭建复制的步骤及详细方法,可以参考文章生产环境搭建MySQL复制的教程。
操作系统需要增加的帐号
根据实际访问及应用的需要,服务器操作系统访问的帐号,每台主机上有 3-5个帐号,并且每个帐号都会有其独自对应的密码。对于一个应用集群中,所有数据库服务器的帐号密码都相同,其他情况下不同服务器操作系统中的帐号名称相同,但是密码肯定不同。
为了避免用户和组ID的混乱,对用户名称的id和用户所属组id进行统一的规定:
admin用户的uid 必须为:501
admin用户组的gid 必须为:501
对应shell命令为:
groupadd -g 501 admin useradd -c “dragoon and other software owner” -g admin -u 501 admin |
mysql用户的uid 必须为:601
mysql用户组的gid 必须为:601
对应shell命令为:
groupadd -g 601 mysql useradd -c “mysql software owner” -g mysql -u 601 mysql |
备注:
使用nagios作为监控手段的情况下,还会创建一个名称为nagios,群组名为nagios,ID号同为401的用户及用户组,另外还有一些其他的帐号,都是类似的方式。
以上是“MySQL数据库服务器如何初始化”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!