Mysql8.0版二进制安装(my.cnf文件灵活编写)

新版本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

-----------------------------------------------------------

这里我没有用到以上配置修改,只针对此次演示做了简单配置,如下:

[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';

修改密码的语法变了(如图:)

# ALTER USER USER() IDENTIFIED BY 'new password';    

 此时就没有报修改密码错误了!!唉

 mysql8.0以后的新版的SQL语法与mysql5.多版本语法好多有改变的,看来需要再次多练习一下mysql了!!!!!

原文地址:https://www.cnblogs.com/123456likun/p/13535080.html