文章目录
1 linux下安装MySQL
rpm安装方式。
1.1 mysql rpm包下载
- 首先下载rpm安装包, mysql下载地址,找到你想要的版本
MySQL-5.7/
mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar
1.2 移除已经安装的早期版本
- 使用以下命令查看当前安装mysql情况,查找以前是否装有mysql
rpm -qa | grep -i mysql
- 如果有查询结果,则说明之前安装了,如:
MySQL-client-5.5.25a-1.rhel5
MySQL-server-5.5.25a-1.rhel5 - 停止mysql服务、删除之前安装的mysql
删除命令:
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1,可尝试一下命令:rpm -e –nodeps 包名 如: rpm -e –nodeps MySQL-client-5.5.25a-1.rhel5
rpm -e --noscripts MySQL-client-5.5.25a-1.rhel5
- 查找之前mysql的目录、并删除
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除.find / -name mysql rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
- 再次查找机器是否安装mysql,如果查询无结果,说明已经卸载彻底,接下来直接安装mysql即可。
1.3 linux mysql安装
-
创建用户和组(如果已经创建则跳过)
groupadd mysql useradd -r -g mysql mysql
-
解压,得到几个压缩文件,如:
mysql-devel 开发用到的库以及包含文件,
mysql mysql 客户端,
mysql-server 数据库服务器,tar -xvf mysql-5.7.23-1.el6.x86_64.rpm-bundle.tar
-
依次安装
rpm -ivh mysql-community-common-5.7.23-1.el6.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.23-1.el6.x86_64.rpm
rpm -ivh mysql-community-client-5.7.23-1.el6.x86_64.rpm
rpm -ivh mysql-community-server-5.7.23-1.el6.x86_64.rpmrpm -ivh mysql-community-server-5.7.23-1.el6.x86_64.rpm
至此,mysql已经安装完成。
上面几个包有依赖关系,执行有先后。使用rpm安装方式安装mysql,安装的路径如下:
a 数据库目录
/var/lib/mysql/
b 配置文件
/usr/share/mysql(mysql.server命令及配置文件)
c 相关命令
/usr/bin(mysqladmin mysqldump等命令)
d 启动脚本
/etc/rc.d/init.d/(启动脚本文件mysql的目录)e /etc/my.conf
-
修改密码
安装完后,使用命令service mysqld start启动MySQL服务。由于MySQL5.7.4之前的版本中默认是没有密码的,登录后直接回车就可以进入数据库,进而进行设置密码等操作。其后版本对密码等安全相关操作进行了一些改变,在安装过程中,会在安装日志中生成一个随机密码。
查看临时密码:
grep 'temporary password' /var/log/mysqld.log 2018-10-28T16:43:10.889769Z 1 [Note] A temporary password is generated for root@localhost:hcLMTxbOh2?w
这样我们得知临时密码是:hcLMTxbOh2?w。
此时,使用MySQL生成的随机密码就能够正常登录:mysql -uroot -p hcLMTxbOh2?w
登录成功后,请立即修改密码。
如果没有修改密码,系统将会提示错误:在"ALTER USER"操作前不会执行其他操作;并且确保修改之后的密码的安全程度能够满足MySQL的要求。推荐数字、字母和特殊符号混用。
执行以下操作配置root用户的密码与授权:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '111111'; mysql> grant all privileges on *.* to 'root' @'%' identified by 111111; mysql> flush privileges;
1.4 安装过程出现的问题:
-
其他设备在客户端中打开表的速度非常慢(无论表的大小),甚至连接超时,但是直接登录到服务器在本地连接MySQL,速度则正常。
问题原因:MySQL数据库收到一个网络连接后,首先拿到对方的IP地址,然后对这个IP地址进行反向DNS解析从而得到这个IP地址对应的主机名。用主机名在权限系统里面进行权限判断。反向DNS解析是耗费时间的,有可能让用户感觉起来很慢。甚至有的时候,反向解析出来的主机名并没有指向这个IP地址,这时候就无法连接成功了。
解决方案:为了避免这个反查过程,可以在MySQL的配置文件my.cnf的[mysqld]项下追加以下配置:
skip-name-resolve
2 yum安装mysql
需要Linux能联外网,或者配置本地yum源。
- 安装mysql
[root@node01 /]# yum install -y mysql-server
- 启动
[root@node01 /]# service mysqld start
- 登陆,修改权限
这种方式安装的mysql初始密码为空,因此初次登陆时只需输入mysql即可,然后再修改相应权限。
[root@node01 /]# mysql
mysql>
mysql> use mysql;
mysql> select user,password,host from user;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '111111' WITH GRANT OPTION;
mysql> select user,password,host from user;
mysql> delete from user where password ='';
mysql> flush privileges;
3 MySQL主从复制
IP | 角色 |
---|---|
192.168.33.3 | master |
192.168.33.4 | slave |
3.1 master配置(192.168.33.3)
-
master上开启binlog日志
一般mysql配置文件在目录/etc下,叫my.cnf (如果找不到的话也有可能在这些目录下:/etc/my.cnf,/etc/mysql/my.cnf,/usr/local/mysql/etc/my.cnf)1、vim /etc/my.cnf 2、在[mysqld]下加入: port=3306 server-id=1 #服务器id (主从必须不一样) log-bin=mysql-bin #打开日志(主机需要打开),这个mysql-bin也可以自定义,这里也可以加上路径#作为主机的配置 binlog-do-db=employees #要给从机同步的库# binlog-do-db=binlog-ignore-db=mysql #不给从机同步的库(多个写多行) binlog-ignore-db=information_schema binlog-ignore-db=performance_schemab inlog-ignore-db=sys expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改 3、重启数据库 service mysqld restart
登陆后测试log_bin是否成功开启:
mysql> show variables like '%log_bin%';
如果列表里的 log_bin 值为 on 说明已开启mysql二进制日志。 -
创建用户,每一个从服务器都需要用到一个账户名和密码来连接主服务器,可以为每一个从服务器都创建一个账户,也可以让全部服务器使用同一个账户。下面就为同一个ip网段的所有从服务器创建一个只能进行主从同步的账户。
首先登陆mysql,然后创建一个用户名为rep,密码为123456的账户,该账户可以被192.168.253网段下的所有ip地址使用,且该账户只能进行主从同步。mysql> create user 'rep'@'192.168.33.%' identified by '111111'; mysql> grant replication slave on *.* to 'rep'@'192.168.33.%' ;
授权时如果报错“Access denied”,可root用户有没有授权权限。
mysql> select host,user,grant_priv,Super_priv from mysql.user;
±----------±---------±-----------±-----------+
| host | user | grant_priv | Super_priv |
±----------±---------±-----------±-----------+
| 127.0.0.1 | root | Y | Y |
| localhost | root | N | Y |
| 10.0.3.% | repluser | N | N |
±----------±---------±-----------±-----------+
可以看到localhost的grant_priv的值为N,也就是说root用户不能授权给其他用户,所以我们需要把这个值改为Y。
mysql> update mysql.user set grant_priv=‘Y’ where host=‘localhost’;
mysql> flush privileges;
改完之后最好重启一下服务器(我没重启还是会报那个错)。 -
查看主服务器上当前的二进制日志名
mysql> show master status\G # File: mysql-bin.000003 Position: 154
这里的file 和position 要和slave上的一致,在下面配置slave时需要用到。
3.2 slave配置(192.168.33.4)
-
vim /etc/my.cnf
[mysqld] port=3306 server_id=4 #不能与其他mysql服务器重复 #加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错。 read_only = 1 master_info_repository=TABLE relay_log_info_repository=TABLE #relay_log_recovery=1 #从机禁止写 #super_read_only=1 #从机禁止写
-
重启mysql服务,登录slave数据库,并做如下设置:
mysql> stop slave; mysql> change master to -> master_host='192.168.33.3', #master的ip -> master_user='rep', #备份用户名 -> master_password='111111', #密码 -> master_log_file='mysql-bin.000003', #要与master的参数一致 -> master_log_pos=154; #要与master的参数一致 mysql> start slave;
-
查看slave从机的状态:
mysql> show slave status \G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如上2个yes 代表设置成功。