上传及安装mysql压缩版步骤
mysql文件太大 4百多兆,后续上传到百度云上,也可以去官网下载
链接:https://pan.baidu.com/s/1d87mUZABuS4H7vxDqlApgg
提取码:g50c
如果网址无法下载邮件扣我naixiang158@163.com
1.上传本地mysql文件
1:首先连接上一台Linux主机
2:输入rz命令,看是否已经安装了lrzsz,如果没有安装则执行 yum -y install lrzsz命令进行安装。
安装成功后,输入rpm命令确认是否正确安装
使用 rz -y命令进行文件上传,此时会弹出上传的窗口:
下载完成后就可以输入ls查看文件了
2.创建数据仓库目录
mkdir /usr/local/mysql
mkdir /usr/local/mysql /mysqldb
3.解压文件
tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
- 将解压的移动文件夹并改名为mysql到 /usr/local/ 目录 下 切换到解压包目录下执行命令
mv mysql-8.0.17-linux-glibc2.12-x86_64 /usr/local/mysql/mysql8.0
4.给存放目录授权
# chmod -R 777 /usr/local/mysql
# chmod -R 777 /usr/local/mysql/mysqldb/
5.创建MySQL组:创建MySQL用户组,并设置密码。
# useradd mysql
# passwd mysql
6.将mysql目录的权限授给mysql用户和mysql组
# chown -R mysql:mysql /usr/local/mysql
7.创建MySQL的安装初始化配置文件my.cnf
vi /etc/my.cnf
输入i,然后用下面内容替换原文本内容,然后按esc键,输入wq保存退出
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql/mysql8.0
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
8.安装MySQL
进入MySQL安装目录:
# cd /usr/local/mysql/mysql8.0/bin/
#./mysqld --initialize –console 初始化生成随机密码(一定保存好,待会需要改密码<编号11>)
9.启动MySQL服务
# cd ..
# cd support-files/
# ./mysql.server start
10.将MySQL加入系统进程中
# cp mysql.server /etc/init.d/mysqld
重启MySQL服务:
# service mysqld restart
11.修改登录密码
# cd ..
# cd bin/
# ./mysql -u root -p
修改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
12.设置允许远程登录
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges; --重要
mysql> quit;
13.初始化以后会生成新的文件,需要重新授权给mysql
# chmod -R mysql:mysql /usr/local/mysql
# chmod -R mysql:mysql /usr/local/mysql/mysqldb/
14.重启MySQL服务:
# service mysqld restart
15.任意目录登录MySQL问题:
执行命令#mysql -u root -p 结果为:未找到命令
解决方法:创建一个软连接到 /usr/bin。
# ln -s /usr/local/mysql/mysql-8.0.16-el7-x86_64/bin/mysql /usr/bin
再执行命令即可登录成功,#mysql -u root -p
出现错误解决
1.启动MySQL服务
- 权限不足:
# cd support-files/
# ./mysql.server start
出现错误Starting MySQL.Logging to '/usr/local/mysql/mysqldb/localhost.localdomain.err'.ERROR! The server quit without updating PID file (/usr/local/mysql/mysqldb/localhost.localdomain.pid).
解决方法:出现类似pid的错误基本是访问权限问题,则将括号中的路径重新授权给mysql用户即可:
#chown -R mysql.mysql /usr/local/mysql/mysqldb
- 权限不足
执行启动命令# service mysqld restart
错误:env: /etc/init.d/mysqld: Permission denied
解决方法#chmod a+wrx /etc/init.d/mysqld
2.如果远程工具无法登录mysql出现2003错误
- 首先查看是my.cnf文件中是限制了127.0.0.1的ip限制, ,如有则去除,
执行命令得到my.cnf所在位置 #whereis my.cnf
-
- 连接mysql本地查看root用户权限是否为 %
- 查看端口号3306是否开放
firewall-cmd --list-ports // 查看防火墙开放了那些端口
没有查看到3306/tcp,说明端口未开放,
#vi /etc/sysconfig/iptables //最后一行添加下面语句
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
输入i,然后用下面内容替换原文本内容,然后按esc键,输入wq保存退出
(telnet默认是没有的需要进行安装 #yum install telnet 安装源,#yum install telnet-server安装服务)
CentOS7的默认防火墙为firewall,且默认是不打开的。
#systemctl start firewalld 启动friewall
#systemctl status firewalld 查看firewall启动情况
#firewall-cmd --zone=public --add-port=3306/tcp --permanent 开启3306端口
然后重启 #firewalld #firewall-cmd --reload
使用 # firewall-cmd --query-port=3306/tcp
检查3306端口是否已经开启,如果显示yes,则表示防火墙已开启该端口。
3.设置MySQL开机自启
先将MySQL加入系统进程
# cp /usr/local/mysql/mysql8.0/support-files/mysql.server /etc/init.d/mysqld
赋予可执行权限:# chmod +x /etc/init.d/mysqld
添加为服务:# chkconfig --add mysqld
查看服务列表:# chkconfig –list
注:3、4、5的状态为开或者on,则表示成功。如果是管或者off,则需要执行:# chkconfig --level 345 mysqld on
最后重启服务器:reboot
再次查看服务列表或者查看3306端口:
配置主从复制
主从服务器要求才可以实现:
1.1、数据库版本一致
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
- 修改主服务器master
a)编辑/etc/my.cnf文件,在[mysqld]下增加如下两行设置:
# [必须]启用二进制日志
log-bin=mysql-bin
# [必须]服务器唯一ID,默认是1,一般取IP最后一段
server-id=1
b)登录mysql,创建用于数据同步的账户
mysql -uroot -p666666
CREATE USER 'mysync'@'ip前缀.%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'mysync'@' ip前缀.%';
GRANT replication client ON *.* TO 'mysync'@' ip前缀.%';
FLUSH PRIVILEGES;
c)查看master状态(查询的状态在从机配置时需要用到)
show variables like 'log_bin%';
show master status;
-
- 修改从服务器slave:
a)编辑/etc/my.cnf文件,在[mysqld]下增加如下两行设置:
[mysqld]
server-id=2
b)登录mysql,创建用于数据同步的账户
/usr/local/mysql/mysql8.0/bin/mysql -uroot -p666666
change master to master_host='10.226.10.84', master_user='mysync', master_password='123456', master_log_file='master-log-bin.000004', master_log_pos=155;
执行命令两个都改成yes了:start slave;
再次查询状态看是否为yes:show slave status\G;
测试
在主服务器上新建一个数据库test:
执行命令查看:show slave status\G;
测试通过,完美
常见问题处理
当我们配置好MySQL主从同步时,原本是可以实现主从同步的,但是重启机器后就发现无法同步了。
MySQL Replication 中 slave 机器上有两个关键的线程,死一个都不行,一个是 Slave_IO_Running,一个是 Slave_SQL_Running。一个负责与主机的 IO 通信,一个负责自己的 slave mysql 语句执行。
1)如果是Slave_SQL_Running:No,如图。
解决办法:
> stop slave;
> set global sql_slave_skip_counter=1;
> start slave;
2)如果是Slave_IO_Running:No,如图。
解决办法:
查看主服务器状态:
查看从服务器状态:
找到问题所在:Master_Log_File没有对应。
> stop slave;
> change master to master_log_file='mysql-bin.000026',master_log_pos=0;
> slave start;
> show slave status\G;
因为主从数据量特别大,会导致日志特别占内存,配置从服务器不产生日志:
编辑my.cnf文件,一般路径为:/etc/my.cnf
在[mysqld]下面添加:skip-log-bin (已测试可以) 或者disable-log-bin(未测试,测试过的朋友告诉下结果)
重启数据库 /etc/init.d/mysqld restart;
执行命令show variables like 'log_bin';
如有帮助 随心: