下载安装包

https://dev.mysql.com/downloads/mysql/5.7.html#downloads

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz

  

 安装前检查是否自带安装 MySQL

rpm -qa | grep mysql

#如果有卸载
rpm -e mysqlXXX  // 普通删除模式
rpm -e --nodeps mysqlXXX  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

#然后再检查否存在 mariadb 数据库,如果有,同样卸载即可
rpm -qa | grep mariadb

注:我这里是存在的,网上好多都是让卸载的,我是用普通用户安装的,我们不妨试试不卸载就安装,有问题再搞呗,所以选择不卸载 mariadb安装

解压安装包&配置

tar -zxvf mysql-5.7.43-linux-glibc2.12-x86_64.tar.gz -C data1/mysql

#添加环境变量
export MYSQL_HOME=data1/mysql

source ~/.bashrc

#创建目录
mkdir $MYSQL_HOME/data $MYSQL_HOME/log

 

创建/data1/mysql/my.cnf文件配置文件

[mysqld]
# 这步是为了跳过root的密码验证,如果是你个人使用的话,其实不用密码更方便
#skip-name-resolve
#skip-grant-tables	
#设置3306端口
port = 3306
#这个不需要自己创建,把路径指定好就行
socket=/data1/mysql/mysql.sock	

# 设置mysql的安装目录,我用的是刚才bashrc里设置的MYSQL_HOME
# 特别注意,不要直接写$MYSQL_HOME,要打完整的路径,不然mysqld启动时会有奇怪的错误
basedir=/data1/mysql
# 设置mysql数据库的数据的存放目录, 这里就是刚才我们创建的data目录的路径
datadir=/data1/mysql/data
log-error=/data1/mysql/log/mysql.log
pid-file=/data1/mysql/mysql.pid

# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M

#plugin所在目录 这步很重要,这个得手动指定,不然会报错。该目录不需要手动创建,在$MYSQL_HOME/lib下面有
plugin_dir=/data1/mysql/lib/plugin

初始化mysql服务以及创建数据库

1.初始化
$MYSQL_HOME/bin/mysqld --initialize --user=user --basedir=$MYSQL_HOME/ --datadir=$MYSQL_HOME/data/

2.初始化之后,进日志目录,查看日志找临时密码
cat /data1/mysql/log/mysql.log
 A temporary password is generated for root@localhost: xxxx

启动mysql 

$MYSQL_HOME/bin/mysqld --defaults-file=$MYSQL_HOME/my.cnf --user=user
ps -ef|grep mysql #启动之后查看进程
ps -ef|grep mysql|grep -v grep |awk '{print $2}'|xargs  kill -9 #杀死mysql进程

 

mysql5.7 密码过期问题 

报错:
ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.
翻译:错误1862(HY000):你的密码已经过期。登录必须改变它使用一个客户端,支持过期的密码。

解决方法:

 

1、 用忽略授权表的方法进入mysql 
        vi /data1/mysql/my.cnf      
        [mysqld]      
        skip-grant-tables
    重启mysql  
2、进入mysql,查看root用户的详细信息
# mysql -u root -p   > use mysql        
               
3、把password_expired 改成不过期
        > update user set password_expired="N" where user="root";       
        > flush privileges;        
        > quit
4、把 /data1/mysql/my.cnf 的 
     skip-grant-tables 这行注释掉,重启mysql

 

  

 

 

 

 

 posted on 2023-07-19 15:56  boye169  阅读(1062)  评论(0编辑  收藏  举报