新版本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配置文件
-----这里先对配置文件进行一个说明(适用于实际生成环境下)--------
# 监听端口
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
-----------------------------------------------------------
这里我没有用到以上配置修改,只针对此次演示做了简单配置,如下:
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
symbolic-links=0
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
#
!includedir /etc/my.cnf.d
(我是为了测试,这里我没再往下修改密码了,我选择放空密码,但Mysqladmin不能直接放空密码,没办法,新版本严谨性还是很强的!)
[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';
修改密码的语法变了(如图:)
# ALTER USER USER() IDENTIFIED BY 'new password';
此时就没有报修改密码错误了!!唉
mysql8.0以后的新版的SQL语法与mysql5.多版本语法好多有改变的,看来需要再次多练习一下mysql了!!!!!