CentOS8.4 安装MySql8.0.26

 1、下载

官方网址:MySQLhttps://www.mysql.com/MySQL :: MySQL Community Downloads
CentOS8.4 安装MySql8.0.26_第1张图片
 CentOS8.4 安装MySql8.0.26_第2张图片
我们选择:Compressed TAR Archive  版本的,不要RPM版的

 CentOS8.4 安装MySql8.0.26_第3张图片

 https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.27-el7-x86_64.tar.gz

# cd /mydata
# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

# 如果传输过程中终端了,然后再次使用 -c 参数,可以接着下载:
# wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

2、安装前的准备

1、 卸载系统自带的mariadb*
# rpm -qa|grep mariadb   
 mariadb-libs-5.5.60-1.el7_5.x86_64 
# rpm -e --nodeps  mariadb-libs-5.5.60-1.el7_5.x86_64  删除此
或者使用yum命令删除
# yum -y remove mariadb* boost-*

2、检查mysq用户、用户组是否存在,不存在就创建
# cat /etc/group | grep mysql
# cat /etc/passwd | grep mysql
# useradd -M -s /sbin/nologin mysql   //创建名为mysq的用户并且没有登录权限 (不指定 -g默认创建了同名mysql的用户组)

3、删除my.cnf mysql (若存在)
# rm -f /etc/my.cnf
# rm -f /etc/init.d/my.cnf
# rpm -qa | grep mysql

 3、解压并设置安装目录

注意此文件为.tar.xz 类型的文件

# cd /mydata
 解压:(分两步)
首先加xz格式的文件
# xz -dev mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

再次解压tar格式,解压到/usr/local/
# tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar -C /usr/local/
# cd /usr/local/
# mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql8   //# 重命名

创建如下目录:
# mkdir /usr/local/mysql8/data   (数据库目录)
# mkdir /usr/local/mysql8/log    (日志目录)
# touch /usr/local/mysql8/log/mysqld.log   (创建日志文档)

//改变mysql的属组
# chown -R mysql:mysql /usr/local/mysql8/ 
或者下面两句
# chown -R mysql /usr/local/mysql8/
# chgrp -R mysql /usr/local/mysql8/

4、安装依赖

查询是否安装libaio依赖包
# yum search libaio
#如果没有,就安装
# yum -y install libaio

5、安装MySQL

# /usr/local/mysql8/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8/ --datadir=/usr/local/mysql8/data/

此版本采用mysql_install_db 进行安装,不再使用cmake 编译安装
# /usr/local/mysql/bin/mysql_install_db     //安装命令
--initialize                                                  //生成默认密码   
--user=mysql                                             //指定mysql用户
--basedir=/usr/local/mysql8/                       //安装目录
--datadir=/usr/local/mysql8/data/                // 数据库目录
最后出现如下:

2021-11-17T09:40:42.245865Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2021-11-17T09:40:42.246411Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2021-11-17T09:40:42.367142Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: I60oX,Ml8Dye

OK 安装成功
注意最后的 I60oX,Ml8Dye 表示默认密码,下面初始化数据库要用到
查看数据库目录 /usr/local/mysql8/data/ 多了很多内容

6、修改配置并启动MySQL

# 启动MySQL命令
# /usr/local/mysql8/support-files/mysql.server start

# 因为没有因为没有修改mysql的配置文件 配置, 报错如下:
/usr/local/mysql8/support-files/mysql.server: line 239: my_print_defaults: command not found
/usr/local/mysql8/support-files/mysql.server: line 259: cd: /usr/local/mysql: No such file or directory
Starting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe)

修改配置

# vim /usr/local/mysql8/support-files/mysql.server

大约46行:
# basedir=/usr/local/mysql8
# datadir=/usr/local/mysql8/data
大约63行:
# mysqld_pid_file_path=/usr/local/mysql8/data/mysqld_pid

# 以及66--73行,相关的路径改成 /usr/local/mysql8

#复制到 /etc/init.d/目录
# cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
#赋予权限
# chmod 755 /etc/init.d/mysqld

再次启动:
# /usr/local/mysql8/support-files/mysql.server start
出现如下:
Starting MySQL.Logging to '/usr/local/mysql8/data/error.log'.
.                                                          [  OK  ]

OK 启动成功
# netstat -tlnp | grep mysqld  查看端口号 这是3306、33060的都已经去启动了,说明MySQL服务器已经开启了

7、设置开机自启动

方法一:(推荐)
# chkconfig  --add mysqld    //将mysql服务加到系统服务中,可以是使用 systemctl status mysqld.service 命令了
# chkconfig mysqld on     //开机自启动

方法二:
[root@VMTest mysql]# chkconfig --level 35 mysqld on
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# chkconfig --add mysqld
[root@VMTest mysql]# chkconfig --list mysqld
[root@VMTest mysql]# service mysqld status

8、配置mysql的环境变量

现在我们使用 # mysql -uroot -p  登录MySQL 报错如下:-bash: mysql: command not found 。是因为还没有 msyql 这个环境变量,设置如下:

# vim /etc/profile
把如下代码添加到 此文件的最后:
export PATH="$PATH:/usr/local/mysql8/bin"

//立即生效
# source  /etc/profile
# echo $PATH

再次:# mysql -uroot -p  OK 可以登录了。  

注:
CentOS8.5 版本 这里执行“# mysql -uroot -p” 报错了:(CentOS8.4以及之前的不报此错误)

[root@qinser ~]# mysql -uroot -p
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

 查看依赖:

# cd /usr/local/mysql8/bin/
# ldd mysql  #查看依赖库文件 
下面列出了各个依赖库
发现:
libtinfo.so.5 => not found    #显示缺少该库文件

进入到 /usr/lib64/  查看发现此目录有 libtinfo.so.6 ,却没有libtinfo.so.5的 我们创建一个软连接 ,

# cd /usr/lib64/
//创建一个名为libtinfo.so.5的软件接,指向此目录的libtinfo.so.6.1文件
# sudo ln -s libtinfo.so.6.1  libtinfo.so.5   

OK 再次执行  

# mysql --version
或者 
# mysql -uroot -p

OK  可以了

9、创建启动文件my.cnf

这里下载的mysql8.0.26版本并没有这个my.cnf文件,因此直接创建的。

# vim /etc/my.cnf
 
# ======================== 粘贴内容 start ========================
[client]
port=3306
socket=/tmp/mysql.sock
#default-character-set=utf8

[mysqld]
basedir=/usr/local/mysql8
datadir=/usr/local/mysql8/data
socket=/tmp/mysql.sock
user=mysql
port=3306
# 服务端使用的字符集默认为8比特编码的latin1字符集
character_set_server=utf8
# 创建新表时将使用的默认存储引擎
# default-storage-engine=INNODB
# symbolic-links=0
# bind-address=0.0.0.0
# 允许最大连接数
max_connections=200
# max_allowed_packet=16M

[mysqld_safe]
log-error=/usr/local/mysql8/data/error.log
pid-file=/usr/local/mysql8/data/mysqld.pid
tmpdir=/tmp

# ======================== 粘贴内容  end ========================
//设置此文件可执行权限
# chmod 755 /etc/my.cnf

10、更改默认密码

先使用初始密码登录
# mysql -uroot -p 

# alter user 'root'@'localhost' identified by '新密码';    -- 注意要含有大小写字母、数字、特殊符号等
Query OK, 0 rows affected (0.01 sec)

#刷新
# flush privileges; 
Query OK, 0 rows affected (0.00 sec)  OK 新密码设置成功

8、设置远程访问

mysql> use mysql; 
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.01 sec)

可以看出,mysql8.0以后的加密方式是caching_sha2_password, 而我们的客户端工具使用的多大是mysql_native_password加密,因此首先需要对root的密码进行加密置换。

修改:

1、更换加密规则,重新设置密码
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'Niu@254507';
Query OK, 0 rows affected (0.01 sec)
 
 
2、更新root的host为%,% 表示通配所有 host,可以访问远程
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
 
3、授权
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
mysql>  flush privileges;
Query OK, 0 rows affected, 1 warning (0.00 sec);

4、查看加密函数是否更改
mysql> select host, user, authentication_string, plugin from user;
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| %         | root             | *94E5BCBFDBBAA71F5E15B717324F45A9966C83B3                              | mysql_native_password |
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
4 rows in set (0.00 sec)

重启mysql服务器 (还要检测服务器是否开发了mysql3306端口,如果没开放,请去控制台放开)
CentOS8.4 安装MySql8.0.26_第4张图片
CentOS8.4 安装MySql8.0.26_第5张图片

 OK 可以远程连接了
CentOS8.4 安装MySql8.0.26_第6张图片

附:常用命令

#
# /etc/init.d/mysqld 
Usage: mysqld  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]
# /etc/init.d/mysqld  start    //开启
# /etc/init.d/mysqld  stop     //停止
# /etc/init.d/mysqld  restart  //重启(强制重启)
# /etc/init.d/mysqld  reload   //平滑重启(在开启的状态下)
# /etc/init.d/mysqld  status   //查看状态

加入环境变量以后可以使用 
# service mysqld   {start|stop|restart|reload|force-reload|status}
或者
# systemctl {start|stop|restart|reload|force-reload|status}  mysqld.service

# netstat -tlnp        //查看所有端口号
# ps aux | grep mysqld      //查看进程
# kill  9203              //通过杀死进程结束mysql  


 

MySQL基本操作常用命令

# 本地连接数据库
# mysql -u root -p
Enter password:  
也可以直接写成
# mysql -uroot -p'niu123456'

# 远程连接数据库(如在118.24.241.124上连接106.12.2.195上的)
# mysql -u root -p -h106.12.2.195 -P3306    //-h用于指定登录主机的IP地址,-P(大写)用于指定远程主机的端口
Enter password:

mysql> show databases;          //显示所有数据库
mysql> use mysql;               //选择mysql数据库
mysql> show tables;             //显示当前mysql数据库中的所有数据表
mysql> desc user;               //显示user表的所有字段
mysql> show create table user\G;  //显示user表的建表语句
mysql> show create database mysql\G;  //显示mysql数据库的建库语句
mysql> select version();        //查看当前数据库的版本
mysql> select user();           //查看当前是哪个用户
mysql> select database();       //查看当前是哪个数据库
mysql> show status;             //查看mysql当前状态
mysql> show variables;          //查看mysql的参数
mysql> show variables like '%dir';
mysql> show processlist;         //查看当前mysql服务器的队列 
mysql> grant all on *.* to niuxitong identified by 'niu123456'; //创建一个普通用户niuxitong   *.* 前一个*表示所有数据库 ,后一个*表示所有表    密码用单引号括起来

mysqldump -u root -p 'niu123456' mysql > /mydata/databack/mysql-001.sql;   //为名为mysql的数据库做备份。导出sql文件保存到/mydata/databack/mysql-001.sql文件中
mysql -u root -p 'niu123456' mysql < /mydata/databack/mysql-001.sql;  还原数据库 
  

你可能感兴趣的:(Mysql,Linux,mysql,centos,数据库,mysql8.0.26)