内网环境MySQL tar包形式升级版本

内网环境MySQL tar包形式升级版本

背景:内网环境,只能上传tar包上去手动升级。同时不动原来的MySQL和配置

准备:
  1. 备份数据库,kill掉MySQL相关进程

  2. 下载新版本包:MySQL官网

    Operating System推荐选择Linux - Generic

#1.上传包到如/usr/local/
#2.解压
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
#3.创建MySQL必须的文件夹和文件等
mkdir mysql-5.7.38/data
mkdir mysql-5.7.38/logs
touch mysql-5.7.38/mysql-error.log
#4.添加MySQL组和用户(如已有跳第5步)
groupadd mysql
# -r表示建立系统账号,-g表示指定所属群组
useradd -r -g mysql mysql
#5.授权
chown -R mysql:mysql mysql-5.7.38/
cd mysql-5.7.38/bin
#6.初始化MySQL
./mysqld --defaults-file=/usr/local/mysql-5.7.38/my.cnf --basedir=/usr/local/mysql-5.7.38/ --datadir=/usr/local/mysql-5.7.38/data/ --user=mysql --initialize
# 复制下生成的root密码,如文章底下的图
#7.copy原来的my.cnf,或者新建一个,比如:
##socket地址为旧版的MySQL socket文件夹地址。不知道地址直接mysql -p,会告诉你在哪,如文章底下的图
##不然启动socket连接还回去旧版的sock文件夹,可能是环境变量问题,我们尽量不动任何原来的配置
##以下为my.cnf文件
[mysqld]
# binlog 配置
log-bin=/usr/local/mysql-5.7.38/logs/mysql-bin.log
expire-logs-days=14
max-binlog-size=500M
server-id=11
# GENERAL
port=3306
basedir=/usr/local/mysql-5.7.38
datadir=/usr/local/mysql-5.7.38/data
socket=/usr/local/mysql/mysql.sock
user=mysql
default-storage-engine=InnoDB
character-set-server=utf8mb4
lower_case_table_names = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/usr/local/mysql-5.7.38/mysql-error.log
pid-file=/usr/local/mysql-5.7.38/mysqld.pid
[client]
socket=/usr/local/mysql/mysql.sock
[mysql]
default-character-set=utf8mb4
socket=/usr/local/mysql/mysql.sock

#8.启动MySQL
./mysqld_safe --defaults-file=/usr/local/mysql-5.7.38/my.cnf &
./mysql -uroot -p
#这里使用刚刚生成的随机密码
#9.修改mysql的root密码
SET PASSWORD = PASSWORD('XXXXX');
#10.修改访问数据库权限,即可外部访问
    grant all privileges on *.* to root@'%'  identified  by 'XXXX';
flush privileges;
#11.检查是否启动成功
ps -ef|grep mysql
netstat -tunlp|grep 3306
#12.检查版本信息
./mysql -uroot -p
select version();
#13.导入旧版mysql数据库

MySQL初始化root密码

mysql socket文件夹地址

补充:

  1. my.cnf 644权限
  2. 如果报错 /tmp/mysql.sock,你可以尝试这种TCP方式连接 :mysql -uroot -h 127.0.0.1 -p
  3. SQL 模式NO_AUTO_CREATE_USER 在 MySQL 8.0 中被移除,不再被识别。去掉ONLY_FULL_GROUP_BY的SQL mode:STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
  4. MySQL8关闭大小写敏感lower_case_table_names=1只能在5.6/5.7低版本的mysql中有效。8以上已经初始化过就无法再修改,只能重装MySQL。LOWER_CASE_TABLE_NAMES只能在初始化服务器时配置。禁止在服务器初始化后更改LOWER_CASE_TABLE_NAMES设置。
  5. MySQL8以上第一次登录修改密码:ALTER USER USER() IDENTIFIED BY ‘123456’;
  6. MySQL8以上修改远程连接权限:use mysql; update user set host = ‘%’ where user =‘root’; flush privileges;
  7. spring boot 连接问题:驱动切换对应MySQL版本;连接URL增加allowPublicKeyRetrieval=true参数;如果报错"Host ‘127.0.0.1’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’",进入MySQL,执行flush hosts;即可。
  8. 出现Failed to find valid data directory报错:data目录旧数据清理下。或者重新设置一个data目录,所有者mysql,权限755。
  9. 报错Can’t connect to local MySQL server through socket ‘/usr/local/mysql/mysql.sock’:先确认sock是否有配置,然后连接数据库时指定ip:./mysql -h 127.0.0.1 -uroot -p。因为如果不指定ip,会默认连localhost,使用主机名参数为“localhost”连接mysql服务端时,mysql客户端会认为是连接本机,所以会尝试以socket文件方式进行连接(socket文件连接方式,比“ip:端口”方式效率更高),这时根据配置文件“/etc/my.cnf”的路径,未找到相应的socket文件,就会引发此错误。详细说明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值