Linux 安装 解压版 mysql 8
一. 下载安装包
https://dev.mysql.com/downloads/file/
可以用ftp上传到linux上
二. 解压文件
xz -d
tar -xvf
... ..
三. 添加系统mysql组和mysql用户:
groupadd mysql
useradd -r -g mysql -m mysql
四. 将解压后的文件移动到安装目录 并重命名
创建mysql的base目录:
mkdir -p /usr/local/mysql/
# 定义变量
echo 'export MYSQL_BASE=/usr/local/mysql' >> /etc/profile # 根据实际情况指定mysql安装目录
echo 'export MYSQL_HOME=${MYSQL_BASE}/mysql-8.0.22' >> /etc/profile # 根据实际情况指定mysql软件的解压目录
echo 'export PATH=$PATH:${MYSQL_HOME}/bin' >> /etc/profile
source /etc/profile
mv mysql-8.0.22-linux-glibc2.12-x86_64 $MYSQL_BASE
解压,做软链接
ln -s $MYSQL_BASE/mysql-8.0.22-linux-glibc2.12-x86_64 $MYSQL_HOME
# 即 $MYSQL_BASE/mysql-8.0.16 为mysql的家目录了,这样有个好处就是后期的升级,删除软链接直接重新指定就行了,
删除软链接的时候注意: rm $MYSQL_BASE/mysql-8.0.16 是删除 软链接 rm $MYSQL_BASE/mysql-8.0.16/ 是把原目录也给删了!!!
五. 创建配置文件,日志等相关目录
cd $MYSQL_BASE
mkdir -p {data,binlogs,log,etc,run}
六. 将mysql目录的所有者更换为mysql用户
chown -R mysql:mysql $MYSQL_BASE
七. 编写配置文件
注意: 此配置文件不是精确,请自行选择
查看一下mysql对于配置文件的查找路径,越左优先级越高
cd /usr/local/mysql/bin
./mysql --help | grep 'Default options' -A 1
-
# ./mysql --help| grep 'Default options' -A 1
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
-这里我们刚好可以选择使用
/usr/local/mysql/etc/
vi $MYSQL_BASE/etc/my.cnf # 注意 basedir 指的时候软件解压的目录
[root@mysql-master support-files]# echo $MYSQL_BASE
/usr/local/mysql
[root@mysql-master support-files]# echo $MYSQL_HOME
/usr/local/mysql/mysql-8.0.22
-------------------------
[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock
[mysqld]
# skip-grant-tables
explicit_defaults_for_timestamp=true
port=3306
socket=/usr/local/mysql/mysql.sock
pid-file=/usr/local/mysql/run/mysql.pid
log_error=/usr/local/mysql/log/error.log
basedir=/usr/local/mysql/mysql-8.0.22
datadir=/usr/local/mysql/data
max_connections=1000
character-set-server=utf8
default-storage-engine=INNODB
八. 初始化&&启动数据库
初始化:
$ mysqld --defaults-file=$MYSQL_BASE/etc/my.cnf --initialize --user=mysql
获取密码:
$ cat $MYSQL_BASE/log/error.log | grep password
A temporary password is generated for root@localhost: k)mBRab0uGsJ
-----------
如果报错可能是缺少安装包libaio和libaio-devel.
解决方法执行 yum install -y libaio 命令
安全启动:
启动mysql:
mysqld_safe --defaults-file=$MYSQL_BASE/etc/my.cnf --user=mysql &
修改密码:
mysql -uroot -pk)mBRab0uGsJ
alter user 'root'@'localhost' identified by '************';
------------------------------补充---------------------------:
使用MySQL8.0版本查看用户的加密插件:
mysql> select user,host,plugin,authentication_string from user;
修改 默认鉴权插件的方法为;
ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
创建用户:
CREATE USER 'tucao1'@'%' IDENTIFIED WITH mysql_native_password BY 'Admin_1234';
修改密码的方式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
ALTER USER 'tucao1'@'%' IDENTIFIED WITH mysql_native_password BY 'Admin_1234';
MySQL8 支持的认证方式
在 MySQL8 中,支持的认证方式有 3 种:
caching_sha2_password,MySQL8 默认
sha256_password
mysql_native_password,MySQL5 支持
在设置用户密码时,使用 with 认证类型 的语法对每个用户进行设置,例如:
ALTER USER 'yourName'@'yourHost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
也可以通过配置服务器选项集中设置:
[mysqld]
default_authentication_plugin=caching_sha2_password
需要注意的是:
目前市场上主流的客户端连接工具支持的密码认证为“mysql_native_password”,暂时不支持“caching_sha2_password”认证方式。
九. 关闭数据库
1. kill (kill mysql进程保留 mysqld_safe 相当于重启mysql进程)
2. 使用脚本
vi $MYSQL_HOME/support-files/mysql.server
# 需要修改脚本
basedir=$MYSQL_HOME
datadir=$MYSQL_BASE/data
mysqld_pid_file_path=$MYSQL_BASE/run
之后才可以使用
# ./mysql.server
Usage: mysql.server {start|stop|restart|reload|force-reload|status} [ MySQL server options ]
后续配置
.....
十. 设置启动文件
将{mysql}/ support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务
cp $MYSQL_HOME/support-files/mysql.server /etc/init.d/mysql
注册启动服务:
chkconfig --add mysql
查看是否添加成功
chkconfig --list
显示:mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
启动mysql数据库
systemctl status mysql
systemctl start mysql
systemctl stop mysql
systemctl restart mysql
十一. 后续升级
升级总结:
停进程(slave)--> 停库(杀进程)-->更改链接指向(删除重建,注意只删除链接)-->拷贝相关文件(参数文件和日志文件)-->启动数据库-->启动进程(slave)
1. 架构为两主一从,本来是应该先升级从库的,但是考虑到这套系统是从库用来收集两主库的数据
重要性比主库大, 故先升级两个主库
2. 替换原来的版本需要注意两个文件,否则起不来数据库,我上面的安装方法将这两个文件单独放到 $MYSQL_BASE 里面升级前后使用同一个文件
error.log
my.cnf
3. 注意修改权限
mysql.mysql
4. 升级从库的时候记得先停slave进程,升级完数据库再启动即可