作者:NiceCui


mysql安装、配置

1. yum 下载mysql

仅限 centos7以下 版本

  1. #yum install mysql
  2. #yum install mysql-server
  3. #yum install mysql-devel

启动服务

  1. [root@localhost hadoop]# service mysqld restart

centos 7 mysql-server失败

  1. [root@yl-web yl]# yum install mysql-server
  2. Loaded plugins: fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.sina.cn
  5. * extras: mirrors.sina.cn
  6. * updates: mirrors.sina.cn
  7. No package mysql-server available.
  8. Error: Nothing to do

查资料发现是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

解决:安装mariadb

  1. [root@yl-web yl]# yum install mariadb-server mariadb
  2. mariadb数据库的相关命令是:
  3. systemctl start mariadb #启动MariaDB
  4. systemctl stop mariadb #停止MariaDB
  5. systemctl restart mariadb #重启MariaDB
  6. systemctl enable mariadb #设置开机启动
  7. 所以先启动数据库
  8. [root@yl-web yl]# systemctl start mariadb

连接mysql

  1. [root@localhost hadoop]# mysql -u root -p
  2. Enter password:
  3. Welcome to the MySQL monitor. Commands end with ; or \g.
  4. Your MySQL connection id is 2
  5. Server version: 5.1.73 Source distribution
  6. Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
  7. Oracle is a registered trademark of Oracle Corporation and/or its
  8. affiliates. Other names may be trademarks of their respective
  9. owners.
  10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  11. mysql>

2. 配置mysql

设置密码

  1. mysql> set password for 'root'@'localhost' =password('password');
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql>
  4. //不需要重启数据库即可生效。

设置编码

  1. mysql配置文件为/etc/my.cnf
  2. 最后加上编码配置
  3. [mysql]
  4. default-character-set =utf8
  5. //这里的字符编码必须和/usr/share/mysql/charsets/Index.xml中一致。

远程连接设置

  1. 把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户。
  2. mysql> grant all privileges on *.* to root@'%'identified by 'password';
  3. 如果是新用户而不是root,则要先新建用户
  4. mysql>create user 'username'@'%' identified by 'password';
  5. 此时就可以进行远程连接了。

配置mysql 端口号

  1. [root@test etc]# vi my.cnf
  2. [mysqld]
  3. port=3306 // 加上设置的端口号
  4. datadir=/var/lib/mysql
  5. socket=/var/lib/mysql/mysql.sock
  6. user=mysql
  7. # Disabling symbolic-links is recommended to prevent assorted security risks
  8. symbolic-links=0
  9. [mysqld_safe]
  10. log-error=/var/log/mysqld.log
  11. pid-file=/var/run/mysqld/mysqld.pid
  12. "my.cnf" 11L, 261C written
  13. [root@test etc]#
  14. 4. 重新启动mysql
  15. [root@localhost /]# service mysqld restart

查看端口:

  1. mysql> show global variables like 'port';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | port | 3306 |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql>

远程连接可能还会存在防火墙阻断远程连接失败的情况

  1. 加入对应mysql端口的 允许
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  3. 结果:
  4. [root@localhost /]# vi /etc/sysconfig/iptables // 打开防火墙配置
  5. # Firewall configuration written by system-config-firewall
  6. # Manual customization of this file is not recommended.
  7. *filter
  8. :INPUT ACCEPT [0:0]
  9. :FORWARD ACCEPT [0:0]
  10. :OUTPUT ACCEPT [0:0]
  11. -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  12. -A INPUT -p icmp -j ACCEPT
  13. -A INPUT -i lo -j ACCEPT
  14. -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
  15. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  16. -A FORWARD -j REJECT --reject-with icmp-host-prohibited
  17. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
  18. COMMIT
  19. 重启防火墙
  20. [root@localhost /]# service iptables restart

如果连接失败 或者 telnet ip port 失败 则关闭防火墙

  1. service iptables stop
  2. // 服务器重启将会失效

主从复制配置

1、主从服务器分别作以下操作:

  • 1.1、版本一致
  • 1.2、初始化表,并在后台启动mysql
  • 1.3、修改root的密码

2、修改主服务器master

  1. #vi /etc/my.cnf
  2. [mysqld]
  3. log-bin=mysql-bin //[必须]启用二进制日志
  4. server-id=222 //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、修改从服务器slave:

  1. #vi /etc/my.cnf
  2. [mysqld]
  3. log-bin=mysql-bin //[不是必须]启用二进制日志
  4. server-id=226 //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台服务器的mysql

  1. /etc/init.d/mysql restart

5、在主服务器上建立帐户并授权slave:

  1. #/usr/local/mysql/bin/mysql -uroot -pmttang
  2. mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456';
  3. //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.1 45.226,加强安全。

6、登录主服务器的mysql,查询master的状态

  1. mysql>show master status;
  2. +------------------+----------+--------------+------------------+
  3. | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +------------------+----------+--------------+------------------+
  5. | mysql-bin.000004 | 308 | | |
  6. +------------------+----------+--------------+------------------+
  7. 1 row in set (0.00 sec)
  8. 注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

7、从服务器设置普通用户只读模式

  1. mysql>create user 'test'@'%' identified by '123456'; // 创建普通用户,可以远程连接
  2. mysql> grant select on *.* to test@'%'identified by '123456'; //授权所有库,只能查询操作
  3. mysql> grant all privileges on *.* to test@'%'identified by '123456'; //这是授予所有权限
  • 关于mysql创建用户以及权限,下面有详细说明;这里只是做了主从复制避免从库添加数据做准备;
  • 从库远程登录就用刚才设置的普通的只要查询权限的账号去登录,避免导致主从出错

8、配置从服务器Slave:

  1. mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
  2. master_log_file='mysql-bin.000004',master_log_pos=308; //注意不要断开,308数字前后无单引号。
  3. Mysql>start slave; //启动从服务器复制功能
  4. change master to master_host='192.168.80.131',master_user='mysync',master_password='q123456',master_log_file='mysql-bin.000001',master_log_pos=251;

9、检查从服务器复制功能状态:

  1. mysql> show slave status\G
  2. *************************** 1. row ***************************
  3. Slave_IO_State: Waiting for master to send event
  4. Master_Host: 192.168.2.222 //主服务器地址
  5. Master_User: mysync //授权帐户名,尽量避免使用root
  6. Master_Port: 3306 //数据库端口,部分版本没有此行
  7. Connect_Retry: 60
  8. Master_Log_File: mysql-bin.000004
  9. Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
  10. Relay_Log_File: ddte-relay-bin.000003
  11. Relay_Log_Pos: 251
  12. Relay_Master_Log_File: mysql-bin.000004
  13. Slave_IO_Running: Yes //此状态必须YES
  14. Slave_SQL_Running: Yes //此状态必须YES
  15. ......
  16. 注:Slave_IOSlave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
  17. 以上操作过程,主从服务器配置完成。

10、MySQL添加用户、删除用户与授权详细说明;

  • 1.新建用户
  1. mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
  2. 这样就创建了一个名为:test 密码为:1234 的用户。
  3. 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。
  4. 如果想远程登录的话,
  5. "localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。
  • 2.为用户授权
  1. 授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 
  2. 2.1 登录MYSQL(有ROOT权限),这里以ROOT身份登录:
  3. @>mysql -u root -p
  4. @>密码
  1. 2.2 首先为用户创建一个数据库(testDB):
  2. mysql>create database testDB;
  1. 2.3 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限):
  2. mysql>grant all privileges on testDB.* to test@localhost identified by '1234';
  3. mysql>flush privileges;//刷新系统权限表
  4. 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 
  1. 2.4 如果想指定部分权限给一用户,可以这样来写:
  2. mysql>grant select,update on testDB.* to test@localhost identified by '1234';
  3. mysql>flush privileges; //刷新系统权限表
  1. 2.5 授权test用户拥有所有数据库的某些权限:  
  2. mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234";
  3. //test用户对所有数据库都有select,delete,update,create,drop 权限。
  4. //@"%" 表示对所有非本地主机授权,不包括localhost。
  5. localhost地址设为127.0.0.1,如果设为真实的本地地址,不知道是否可以,没有验证。)
  6. //对localhost授权:
  7. 加上一句grant all privileges on testDB.* to test@localhost identified by '1234';即可。
  • 3、删除用户
  1. @>mysql -u root -p
  2. @>密码
  3. mysql>Delete FROM user Where User='test' and Host='localhost';
  4. mysql>flush privileges;
  5. mysql>drop database testDB; //删除用户的数据库
  6. 删除账户及权限:>drop user 用户名@'%';
  7.         >drop user 用户名@ localhost;
  • 其他mysql操作
  1. 5. 列出所有数据库
  2.   mysql>show database;
  3. 6. 切换数据库
  4.   mysql>use '数据库名';
  5. 7. 列出所有表
  6.   mysql>show tables;
  7. 8. 显示数据表结构
  8.   mysql>describe 表名;
  9. 9. 删除数据库和数据表
  10.   mysql>drop database 数据库名;
  11.   mysql>drop table 数据表名;

11、主从服务器测试

  1. 主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
  2. mysql> create database hi_db;
  3. Query OK, 1 row affected (0.00 sec)
  4. mysql> use hi_db;
  5. Database changed
  6. mysql> create table hi_tb(id int(3),name char(10));
  7. Query OK, 0 rows affected (0.00 sec)
  8. mysql> insert into hi_tb values(001,'bobu');
  9. Query OK, 1 row affected (0.00 sec)
  10. mysql> show databases;
  11. +--------------------+
  12. | Database |
  13. +--------------------+
  14. | information_schema |
  15. | hi_db |
  16. | mysql |
  17. | test |
  18. +--------------------+
  19. 4 rows in set (0.00 sec)
  20. 从服务器Mysql查询:
  21. mysql> show databases;
  22. +--------------------+
  23. | Database |
  24. +--------------------+
  25. | information_schema |
  26. | hi_db | //I'M here,大家看到了吧
  27. | mysql |
  28. | test |
  29. +--------------------+
  30. 4 rows in set (0.00 sec)
  31. mysql> use hi_db
  32. Database changed
  33. mysql> select * from hi_tb; //查看主服务器上新增的具体数据
  34. +------+------+
  35. | id | name |
  36. +------+------+
  37. | 1 | bobu |
  38. +------+------+
  39. 1 row in set (0.00 sec)

12、完成:

  1. 编写一shell脚本,用nagios监控slave的两个yesSlave_IOSlave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

二:mysql安装配置、主从复制配置详解的更多相关文章

  1. Mysql安装及主从复制配置

    1.下载 mysql数据库 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.9-linux-glibc2.5-x86_64.ta ...

  2. MySql绿色版配置及使用详解

    原文:MySql绿色版配置及使用详解 最近在做项目开发时用到了MySql数据库,在看了一些有关MySql的文章后,很快就上手使用了.在使用的过程中还是出现了一些问题,因为使用的是绿色免安装版的MySq ...

  3. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  4. Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下(http://xb.xcjl0834.com) 一.NFS服务简介 NFS 是Network File S ...

  5. Linux中redis安装配置及使用详解

    Linux中redis安装配置及使用详解 一. Redis基本知识 1.Redis 的数据类型 字符串 , 列表 (lists) , 集合 (sets) , 有序集合 (sorts sets) , 哈 ...

  6. Windows 7操作系统下PHP 7的安装与配置(图文详解)

    前提博客 Windows 7操作系统下Apache的安装与配置(图文详解) 从官网下载           PHP的官网 http://www.php.net/         特意,新建这么一个目录 ...

  7. MYSQL服务器my.cnf配置文档详解

    MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ...

  8. webpack安装配置使用教程详解

    webpack安装配置使用教程详解 www.111cn.net 更新:2015-09-01 编辑:swteen 来源:转载 本文章来为各位详细的介绍一下关于webpack安装配置使用教程吧,这篇文章对 ...

  9. OpenVPN下载、安装、配置及使用详解

    OpenVPN下载.安装.配置及使用详解   OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的免费开源软件.使用OpenVPN可 ...

  10. 全网最详细的Windows系统里PLSQL Developer 64bit安装之后的一些配置(图文详解)

    不多说,直接上干货! 注意的是: 本地若没有安装Oracle服务端,Oracle server服务端64位,是远程连接,因此本地配置PLSQL Developer64位. PLSQL Develope ...

随机推荐

  1. MLR算法[Paper笔记]

    介绍 MLR算法是alibaba在2012年提出并使用的广告点击率预估模型,2017年发表出来. 如下图,LR不能拟合非线性数据,MLR可以拟合非线性数据,因为划分-训练模式. 讨论,非线性拟合能力: ...

  2. kali git 环境配置

    kali 配置很简单,输入apt-get install git 我输入时返回了错误,执行命令dpkg --configure -a 就行了

  3. 最好用的MongoDB GUI - LivingMongo

    LivingMongo是一个mongodb数据库的GUI操作系统,支持对数据字段的修改.数据搜索.集合的分类.索引管理.空间统计.慢查询等 demo地址 : http://living-mongo.k ...

  4. Abp扩展之【配置功能】

    Abp的扩展功能非常强大,配合持久化可以很方便的配置系统.租户.用户的配置,关于ABP的配置请参考: http://www.cnblogs.com/farb/p/ABPSettingManagemen ...

  5. Arrays.asList()生成的List抛UnsupportedOperationException分析

    一.背景:使用工具类 Arrays.asList()把数组转换成集合时,使用其修改集合相关的方 法,它的 add/remove/clear 方法会抛出 UnsupportedOperationExce ...

  6. 》》webpack打包成的文件

    /******/(function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installed ...

  7. 》》vue

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  8. NS3网络仿真(10): 解析以太网帧

    快乐虾 http://blog.csdn.net/lights_joy/ 欢迎转载.但请保留作者信息 解析以太网帧的过程是构建以太网帧的逆过程,当我们接收到一个以太网帧时,仍然以上一节中的ARP帧为例 ...

  9. BIRT实现组内跨行计算

    问题来源:http://developer.actuate.com/community/forum/index.php?/topic/36160-dealing-with-previous-rows- ...

  10. 第一次面试&amp;第一次霸面

    哈哈哈哈,第一次面试和第一次都献给了CVTE! CVTE的招聘流程有点特别:网測-- 一面--笔试--二面--offer 想起网測那天就心酸.那先在做第三部分的专业測试.计时器突然出错........ ...