MySQL8.0Linux安装教程
下载并安装
需要说明的一点是我使用的是SSH secure shell Client连接linux系统的,它的用法和命令窗口差不多。界面如图:一样的使用Linux命令操作。
话不多说
第一步:
1)、切换到 /usr/local下
cd /usr/local
2)、创建mysql文件夹
mkdir mysql8
3)、切换到mysql文件夹下
cd mysql8
4)、下载mysql8.0安装包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
如果执行没反应,可以复制安装包链接在Windows的浏览器下载好,再用SSH移到 /use/local/mysql文件夹下面(这个时候就提现出了SSH的便利性)
5)、解压mysql8.0安装包
tar xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
6)、重命名解压出来的文件夹,这里改成mysql-8.0
mv mysql-8.0.20-linux-glibc2.12-x86_64 /usr/local/mysql8
7)、/use/local/mysql8文件夹下创建data文件夹 存储文件
mkdir data
8)、分别创建用户组以及用户和密码(如果提示已存在说明之前有创建过了)
groupadd mysql
useradd -g mysql mysql
9)、授权刚刚新建的用户
chown -R mysql.mysql /usr/local/mysql/mysql-8.0
chmod 750 /usr/local/mysql/data -R
10)、配置环境,编辑/etc/profile文件
vim /etc/profile
在最后一行加
export PATH=$PATH:/usr/local/mysql8/bin:/usr/local/mysql8/lib
11)、编辑my.cnf文件
vim /etc/my.cnf
按下面复制进去就好了,#号开头的不用管,一样,添加完之后,换行,打出“:sq”,用来保存文件并退出
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
#port=3306
#server-id=3306
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
log-bin=/usr/local/mysql8/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql8/data
innodb_log_group_home_dir=/usr/local/mysql8/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql8/data/mysql.log
pid-file=/usr/local/mysql8/data/mysql.pid
12)、切换到/usr/local/mysql8/bin目录下
cd bin
13)、初始化基础信息,得到数据库的初始密码
./mysqld --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data/ --initialize
如图,复制出红框的初始密码,保存到本地,后面需要使用到。
ISSUE:如果因为路径等各种问题需要重新初始化的,需要清空上面创建的data文件,在data所在的目录下使用 rm -rf data 命令。
14)、复制 mysql.server 文件,在/usr/local/mysql8目录下执行
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
15)、赋予权限
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld
16)、检查一下/var/lib/mysql是否存在,否则进行创建
mkdir /var/lib/mysql
然后再赋予权限
chown -R mysql:mysql /var/lib/mysql/
17)、启动数据库,有SUCCESS字眼说明MySQL安装完成
service mysql start
如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是端口被占用,
使用lsof -i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill PID(进程号)杀掉进程,重新执行service mysql start
修改密码,并设置远程连接
1)、修改数据库root账号的密码,并设置可以远程访问(因为root默认是不能远程访问的)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'psh120370';
2)、执行flush privileges; 使密码生效
flush privileges;
3)、选择数据库
use mysql;
4)再修改远程连接并生效
update user set host='%' where user='root';
5)执行提交命令,搞定!
flush privileges;
最后就可以使用root账号去登录mysql了
题外:
给mysql创建新的数据库用户并授予权限
1)创建用户(名称随意,这里的用户名称为mysql)并可以远程访问
CREATE user ‘mysql’@‘%’;
#修改密码
alter user ‘mysql’@‘%’ identified with mysql_native_password by ‘tcl.2021’;
2)创建新的数据库
#create database 数据库名 default character set utf8mb4 collate utf8mb4_unicode_ci;
3)把新的数据库授权给新用户
#将test库的所有权限赋予mysql用户
grant all privileges on test.* to “mysql”@“%”;
grant all privileges on test.* to “tcl”@“%”;
4)、刷新权限
flush privileges;
开机自启
添加为服务: chkconfig --add mysqld
查看服务列表: chkconfig --list
看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysqld on
重启计算机:reboot
MYSQL主从
前提:配置好两台mysql
确认mysql server 的uuid是否相同
-- 找到 auto.cnf 文件
find / -iname "auto.cnf"
/usr/local/mysql8/data/auto.cnf
-- 如果相同需要修改
vim /usr/local/mysql8/data/auto.cnf
或者直接删除,会重新生成
cd /usr/local/mysql8/data/
cp auto.cnf auto-back.cnf
rm -rf auto.cnf
1、主机配置文件
编辑my.cnf文件
vim /etc/my.cnf
具体参数配置如下:
- 必选:
#[必须]主服务器唯一ID
server_id=1
#[必须]启用二进制日志,指名路径。比如:自己本地的路径/log/mysqlbin
log-bin=mysql-bin
- 可选:
#[可选] 0(默认)表示读写(主机),1表示只读(从机)
read-only=0
#设置日志文件保留的时长,单位是秒
binlog_expire_logs_seconds=6000
#控制单个二进制日志大小。此参数的最大和默认值是1GB
max_binlog_size=200M
#[可选]设置不要复制的数据库
binlog-ignore-db=test
#[可选]设置需要复制的数据库,默认全部记录。比如:binlog-do-db=atguigu_master_slave
binlog-do-db=需要复制的主数据库名字
#[可选]设置binlog格式
binlog_format=STATEMENT
2、从机配置
编辑my.cnf文件
vim /etc/my.cnf
#[必须]从服务器唯一ID
server_id=2
server_id
#[可选]启用中继日志
relay-log=mysql-relay
3、主机:建立账户并授权
#在主机MySQL里执行授权主从复制的命令
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'从机器数据库IP' IDENTIFIED BY 'abc123';
#5.5,5.7
如果使用的是MySQL8,需要如下的方式建立账户,并授权slave:
CREATE USER 'slave1'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
#此语句必须执行
ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
查询Master的状态,并记录下File和Position的值。
show master status;
mysql-bin.000070 1106
4、从机:配置需要复制的主机
从机上复制主机的命令
CHANGE MASTER TO
MASTER_HOST='主机的IP地址',
MASTER_USER='主机用户名',
MASTER_PASSWORD='主机用户名的密码',
MASTER_LOG_FILE='mysql-bin.具体数字',
MASTER_LOG_POS=具体值;
这里需要根据自己的服务器信息做修改
CHANGE MASTER TO MASTER_HOST='192.168.158.134',MASTER_USER='slave1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000070',MASTER_LOG_POS=1106;
启动slave同步
START SLAVE;
接着,查看同步状态:
SHOW SLAVE STATUS\G
如果下面两个参数都是yes,就配置成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果出错,可能的原因有:
1. 网络不通
2. 账户密码错误
3. 防火墙
4. mysql配置文件问题
5. 连接服务器时语法
6. 主服务器mysql权限
关闭主从:
stop slave;
如果想要重新配置主从,就需要停止从服务器复制功能,再使用需要重新配置主从。否则会报错如下:
重新配置主从,需要在从机上执行:
stop slave;
reset master; #删除Master中所有的binglog文件,并将日志索引文件清空,重新开始所有新的日志文件(慎用)