准备工作
将mysql tar包上传到ftp 目录后解压,因为不是用zip算法压缩的所以不支持参数 z
1
| tar -vxf mysql-8.0.27-linux-glibc2.17-x86_64-minimal.tar
|
解压后得到三个压缩文件,分别是主程序、、route路由、测试test
解压主程序
1
| tar -vxf mysql-8.0.27-linux-glibc2.17-x86_64-minimal.tar.xz
|
得到解压后文件就是 已编译好的程序
在bin 目录中可以看见和window版本一一致的主程序 mysqld 和客户端程序 mysql
安装配置
将解压好的的mysql拷贝到local目录下重命名 并进入
1 2
| cp -r /usr/ftp/mysql-8.0.27-linux-glibc2.17-x86_64-minimal /usr/local/mysql8 cd /usr/local/mysql8/
|
创建mysql用户
1 2
| useradd -r -g root mysql #chown -R mysql:root ./
|
修改mysql的安装目录设置
加入
1 2 3
| basedir=/usr/local/mysql8 datadir=/usr/local/mysql8/data socket=/tmp/mysql/mysql.sock
|
进入local 下mysql 的安装目录 执行mysql主程序的初始化参数 指定数据目录 注意root@localhost后的密码
1 2
| ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data ./bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql8/data
|
把mysql服务拷贝到init目录下 成为系统服务
1
| cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysql
|
修改系统务器中指定的mysql安装目录
1 2
| basedir=/usr/local/mysql8 datadir=/usr/local/mysql8/data
|
创建临时文件夹和日志文件夹 创建一个默认的日志文件
1 2 3 4
| mkdir /tmp/mysql mkdir /var/log/mariadb touch /var/log/mariadb/mariadb.log chown -R mysql:root /var 授予mysql用户组访问权限
|
设置文件配置 字符集和socket
1
| vim /etc/my.cnf.d/mysql-clients.cnf
|
1 2
| default-character-set=utf8 socket=/tmp/mysql/mysql.sock
|
1
| chown -R mysql:root /tmp 继续赋予权限
|
第一次运行 mysql -uroot -p 打不开 执行下面的ln 创建一个软链接(windows中的快捷方式 创建在usr bin 目录中,因为usr/bin 在path变量中)
1
| ln -s /usr/local/mysql8/bin/mysql /usr/bin/
|
启动
密码
免密登陆
找到mysql配置文件:my.cnf
在【mysqld】模块添加:skip-grant-tables 保存退出
重启mysql服务使配置生效
密码置空
选择数据库
将密码置空 退出数据库
1 2
| update user set authentication_string = '' where user = 'root'; quit
|
去除免密登陆配置
注释掉 skip-grant-tables
重启服务
修改密码
1 2
| mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
|
%表示所有地址 localhost 表示本机 如果上方修改密码用的是localhost则需要设置允许远程登录。
允许远程登录
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #选择数据库 use mysql;
将root用户设置为所有地址可登录 localhost 表示只有本机可登录 update user set host='%' where user='root';
将用户root密码设置为用不过期 alter user 'root'@'%' identified by '123456' password expire never;
修改root用户密码加密方式 alter user 'root'@'%' identified with mysql_native_password by '123456';
刷新权限 flush privileges;
|
MySQL主从
192.168.139.123 //主库 192.168.139.122 //从库
添加
1 2
| log-bin=mysql-bin #开启二进制日志 server-id=1 #主机设置server-id=1 主机设置server-id=2
|
修改后重启mysql
主库
给主数据库创建用户并授权:用户:repl 密码:123456 ip填写从库的ip
1 2 3
| CREATE USER 'repl'@'192.168.139.122' IDENTIFIED BY '123456'; //创建用户 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.139.122'; //授予权限 flush privileges; //刷新权限
|
查看日志文件的位置和状态
从库
执行同步SQL语句(主库的ip、主机名、登录凭证、二进制文件的名称和位置)
1 2 3 4 5 6
| CHANGE MASTER TO MASTER_HOST='192.168.139.123', MASTER_USER='repl', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS= 1765;
|
启动slave同步进程
查看slave状态
MySQL主主
192.168.139.122(从库)
给主数据库创建用户并授权:用户:repl 密码:123456 ip填写从库的ip
1 2 3
| CREATE USER 'repl'@'192.168.139.123' IDENTIFIED BY '123456'; //创建用户 GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.139.123'; //授予权限 flush privileges; //刷新权限
|
查看日志文件的位置和状态
192.168.139.123(主库)
执行同步SQL语句(主库的ip、主机名、登录凭证、二进制文件的名称和位置)
1 2 3 4 5 6
| CHANGE MASTER TO MASTER_HOST='192.168.139.122', MASTER_USER='repl', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 3941;
|
启动slave同步进程
查看slave状态
报错
原来是主库repl的plugin是caching_sha2_password 就会导致连接不上,修改为mysql_native_password即可解决。
1
| select user,host,password_expired from mysql.user;
|
1
| SELECT plugin FROM `user` where user = 'repl';
|
1
| ALTER USER 'repl'@'192.168.139.122' IDENTIFIED WITH mysql_native_password BY '123456';
|