mysql8.0的安装和初始化使用教程
admin
2023-04-30 18:43:58
0

下文内容主要给大家带来mysql8.0的安装和初始化使用教程,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。

安装

因为mysql官方和以往一样,给出二进制包的方式,所以和以往安装方式并没有太大差别

首先官网下载二进制包,然后就可以正常解压缩安装了,我习惯了下面的方式

tar xf mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
mv mysql-8.0.11-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/
ln -sf mysql-8.0.11-linux-glibc2.12-x86_64/ mysql80
mkdir -p /data/mysql/data80
groupadd mysql
useradd -g mysql -s /sbin/nologin mysql

其实二进制包也没什么安装概念,都是拿来就用

-注意:操作前要确保没有其他mysql发行版干扰,特别是yum安装的和rpm安装,

#查看已安装的rpm包中又没有mysql和mariadb的安装包
rpm -qa |grep -E 'mysql|mariadb'
mariadb-libs-5.5.44-2.el7.centos.x86_64
#删除查找出来的rpm安装包
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
rpm -e --nodeps mysql.x86_64

mysql8.0的安装和初始化使用教程

初始化使用

1.初始化

其实和mysql5.7没什么差别

/usr/local/mysql80/bin/mysqld --defaults-file=/usr/local/mysql80/my.cnf --initialize

然后密码也在之前一样的地方

sed -n '/password/p' /data/mysql/data80/mysql.err
.....A temporary password is generated for root@localhost: %pqGI?ATQ4fg,

记得启动前要把权限设置一下再启动

chown -R mysql:mysql /data/mysql/data*
/usr/local/mysql80/support-files/mysql.server start

先用mysql8.0自带的mysql客户端和初始化密码登进去,后面会说为什么要这么干

/usr/local/mysql80/bin/mysql -uroot -p'%pqGI?ATQ4fg' -S /tmp/mysql80.sock  -P3308

改密码方式也是和5.7一样的

mysql> alter user 'root'@'localhost' identified by '123';
mysql> set password for 'root'@'localhost'=password('123');
mysql> update mysql.user set authentication_string=password('123') where user='root' and Host = 'localhost';
mysql> flush privileges;

这个时候,你如果用默认的mysql客户端登陆,可能就会有这个报错

mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock 
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/local/mysql/lib/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

在mysql5.7环境里,虽然可以设置default_authentication_plugin来改变认证加密方式,但是一般人不会去设置.在mysql8.0下,默认变成了default_authentication_plugin=caching_sha2_password,包括你刚初始化的root用户也是这个认证加密方式,这样的结果是让你除非用新的协议驱动,例如必须用8.0自带的mysql客户端才行,不然就连接不上数据库.这样就必然造成不兼容的情况,幸好,是可以改回旧的方式的.

vim my.cnf
[mysqld]
default_authentication_plugin=mysql_native_password

但是,这个参数只对新授权的用户生效,旧的root密码还是用旧的方式,类似下面这样

#先用新客户端登陆
/usr/local/mysql80/bin/mysql -uroot -p123 -P3308 -S /tmp/mysql80.sock
#查看各用户情况
mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)


可以看到plugin是不一样的,密码的加密方式也很明显不一致造成差异.

然后我们再新建一个用户,就可以看到是和以前一样了

mysql> select Host,User,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| Host      | User             | plugin                | authentication_string                                                  |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %         | sroot            | mysql_native_password | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1                              |
| localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                              |
| localhost | root             | caching_sha2_password | $A$005$.Sf}Q/Jh>3b6CjI5/vMJVDIQbS1dbFWaCVuiby7aX3ZY4lB6/M7Vvny5DUA |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

再次用默认的mysql客户端登陆

mysql -usroot -p123123 -P3308 -S /tmp/mysql80.sock
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:        17
Current database:    
Current user:        sroot@localhost
SSL:            Not in use
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server version:        8.0.11 MySQL Community Server - GPL
Protocol version:    10
Connection:        Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql80.sock
Uptime:            1 hour 25 min 18 sec

Threads: 2  Questions: 120  Slow queries: 0  Opens: 230  Flush tables: 2  Open tables: 203  Queries per second avg: 0.023
--------------

解决了一个兼容性问题了.


2.授权

上面说了创建一个用户,在mysql8.0创建用户和授权和之前不太一样.其实也不能说不一样,而是说更严格,需要先创建用户和设置密码,然后才能授权.

#先创建一个用户
create user 'sroot'@'%' identified by '123123';
#再进行授权
grant all privileges on *.* to 'sroot'@'%' with grant option;

如果按以前的方式来做,那就会报语法错误

grant all privileges on *.* to 'sroot'@'%' identified by '123123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '123123'' at line 1

所以授权用户要注意方法了


3.参数变更

因为版面有限,我没有贴出my.cnf文件,而由于一些特性的原因,mysql8.0一些配置和之前的不太一样,下面来列举我发现的.

query_cache彻底消失了,在mysql5.7还需要手动设置为关闭,现在可以不用理会了,所以相应的两个参数就可以注释掉了

#query_cache_size=0
#query_cache_type=0

innodb_undo_logs不能再设置了,在mysql8.0里,undo独立表空间是默认开启的,而且值为2,也就是默认两个,但是不能设innodb_undo_logs这个参数来指定回滚段大少,回滚段默认就是128

#innodb_undo_logs

其实暂时没发现,待发现再补上

然后也发现系统表现在都是innodb引擎,其实之前也在特性里看到了.

对于以上关于mysql8.0的安装和初始化使用教程,如果大家还有更多需要了解的可以持续关注我们的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。

 

 







相关内容

热门资讯

烈焰熊熊,堪比“原子弹”,欧洲... 据美国有线电视新闻网(CNN)7月29日报道,席卷法国西南部的大片野火燃烧得如此猛烈,以至于形成了一...
外交部:对日本熊本县地震遇难者... 据凤凰卫视报道,针对日本熊本县发生强震造成人员伤亡,中国外交部发言人毛宁7月29日在例行记者会上表示...
高铁喧哗被劝阻后叫嚣全家体制内... “女子高铁喧哗被劝阻后叫嚣全家体制内”一事迎来官方通报。据新京报报道,7月29日,辽宁北票市公安局发...
广东专业蓝牙耳机定制厂家推荐,... 在珠三角腹地,广东早已成为全球蓝牙耳机产业链的“心脏地带”。从深圳华强北的声学元件批发,到东莞、惠州...
格雷厄姆葬礼变地缘竞价场!两大... 有些葬礼,送别的是逝者;有些葬礼,演的却是活人最现实的政治博弈。当地时间7月28日,美国老牌鹰派参议...
一道小学数学题难住3名医学博士... 3名不同学校的博士同做一道数学题,谁最厉害?近日,一陕西网友发布的视频引发热议。29日,视频发布者“...
华为全新“小艺任务”亮相:整合... 7月29日,在华为鸿蒙电脑新品技术沟通会上,终端云服务小艺业务部总裁贾永利宣布,小艺将迎来“从对话到...
广西日报特稿《王的猜想》火了,... 澎湃新闻记者 蒋子文 实习生 汤煜炜为应对外界购买纸质版特稿《王的猜想》的热情,《广西日报》宣布紧急...
月租20元内!2026年平价云... 不少手游玩家、账号运营从业者挑选云手机时,首要诉求就是低价够用,想要控制每月支出在20元以内,同时兼...
诺奖得主如何看待王虹境遇?“我... 中村修二(2014年诺贝尔物理学奖得主)【导读】近日王虹与邓煜双双获得2026年菲尔兹奖,成为了首批...