下载安装包
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