新版本mysql二进制安装遇到不少坑(慢慢磨合吧)
系统环境:centos7.6
这里我安装的是mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz (官网有各种大小的包,这里我下载的是二进制的包,便于修改配置)
官网下载:https://dev.mysql.com/downloads/mysql/
下载好后,开始安装:
1,第一步 先卸载可能会影响安装的包
[root@localhost ~]# rpm -q mysql mysql-server mariadb mariadb-server
未安装软件包 mysql
未安装软件包 mysql-server
未安装软件包 mariadb
未安装软件包 mariadb-server
如果出现没有卸载的包,需全部卸载
2,第二步上传mysql8.0.21这个包,开始安装
#tar xf mysql-8.0.21-linux-glibc2.17-x86_64-minimal.tar.xz -C /usr/local/ //这里解压到/usr/local下
#cd /usr/local
#mv mysql-8.0.21-linux-glibc2.17-x86_64-minimal/ mysql //改个名
#useradd -M -s /sbin/nologin mysql //创建个用户
#chown -R mysql:mysql /usr/local/mysql/ //给个权限
#/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize //初始化一下数据库(初始前先做配置文件,如下步骤)
3,第二步,修改my.conf配置文件
==================================================================
-----这里先对配置文件进行一个说明(适用于实际生成环境下)--------
[mysqld]
# 监听端口
port=3306
# 安装目录
basedir=/usr/local/mysql
# 数据目录
datadir=/usr/local/mysql/data
# 最大连接数
max_connections = 100
# 默认数据库引擎
default-storage-engine = InnoDB
# 字符集
character-set-server=utf8
# 错误日志
log-error = /usr/local/mysql/log/error.log
# 开启慢日志
slow_query_log = 1
# 慢查询日志时间阈值 默认是10S
long-query-time = 30
# 慢查询日志存放路径
slow_query_log_file = /usr/local/mysql/log/show.log
# 记录那些由于查找了多余1000次而引发的慢查询
min_examined_row_limit = 1000
# 记录由Slave所产生的慢查询
log-slow-slave-statements
# 如果运行的SQL语句没有使用索引,则将这条SQL语句记录到慢查询日志文件中
log-queries-not-using-indexes
--------------------------配置文件是以上内容,保存退出后,开始初始化---------------------------------
# mkdir data
# mkdir log
# touch log/error.log
# chown -R mysql. *
# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这里生成的密码等下会用到
# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# service mysqld start
# ss -naltp
# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
# source /etc/profile
# mysql_secure_installation
# mysql -uroot -p
==================================================================================
这里我没有用到以上配置修改,只针对此次演示做了简单配置,如下:
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
symbolic-links=0
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
#
!includedir /etc/my.cnf.d
4,第四步,做启动文件
#cd /usr/local/mysql/support-files
#cp mysql.server /etc/init.d/mysqld
#chmod +x /etc/init.d/mysqld
#chkconfig --add mysqld
#ln -s /usr/local/mysql/bin/* /usr/local/bin/
#systemctl start mysqld //启动mysql
5,第五步,修改密码(注:这里我遇到一个问题,修改密码时总有报错,之后上网查后,是mysql8.0变得更加”严谨“了!密码要复杂的,不然不能修改!)
(我是为了测试,这里我没再往下修改密码了,我选择放空密码,但Mysqladmin不能直接放空密码,没办法,新版本严谨性还是很强的!)
6,第六步,其实到第五步,mysql的安装就已经完成了,这里我是不服“严谨”,选择跳过验证,进入mysql将密码放空!
[root@localhost ~]# systemctl stop mysqld
[root@localhost ~]# ps aux | grep mysqld
#mysqld_safe --skip-grant-tables &
#mysql / / 进入mysql
修改密码
mysql> show databases; //查询库
mysql> use mysql //进入库
mysql> show tables; //查询表
mysql> desc user;
mysql> select user,authentication_string from user; //查看用户详细表信息
mysql> update user set authentication_string=PASSWORD('123456') where user='root'; //修改密码
mysql> flush privileges; //生效
mysql> exit
这里又遇到一个尴尬的问题(也是我发现新版本的变态地方)
当我按以上步骤走,到修改密码这一步,出现报错,提示说一个一个输入??????
(这里我以为我语法有问题,另开了一台以前mysql版本5.6试了一下没问题!!!!!我靠??)
之后找了官方文档,才明白怎么回事,mysql8.0新版本sql语句有一点点的变化,简单说就是两种操作不能同时一起执行,需分开一个一个执行???(具体可以上官网查看官方文档)
我只能改进命令(将root登陆密码改为空)如图:
#update user set authentication_string = '' where user = 'root';
退出mysql后,再用空密码进一次mysql
然后执行以下操作:
# ALTER USER USER() IDENTIFIED BY 'new password'; ##这里就可以添加你需要的密码......了
此时再就没有报修改密码错误了!!