Linux 系统安装 Mysql 8.0.30

1、MySQL Community Downloads

下载地址:[https://dev.mysql.com/downloads/mysql/]
我选择的是 Linux - Generic 下面的 Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive 版本(压缩TAR存档版本)
参考界面:
在这里插入图片描述

2、安装

 需要准备工具:Xshell 7 、Xftp 7  或者其它工具

2.1、 压缩TAR存档版本的安装

2.1.1、新建安装程序文件所在的目标文件夹。

一般程序放在 /usr/local/mysql/ 目录,数据文件放在 /usr/local/mysql/data/。data 文件夹不用建立了,mysql8 在初始化会自己建立。

  1. 新建目标目录可以用命令 mkdir mysql 或者利用xftp 工具 右键新建文件夹实现

(1) 切换到 /usr/local/ 目录

cd /usr/local/ 

(2) 新建mysql文件夹

 mkdir mysql 

终端命令行实现:
在这里插入图片描述

2.1.2、新上传压缩TAR存档版本的文件并且解压文件

 (1) 上传:我是利用Xftp 7工具上传。
 (2)  解压缩文件
命令:tar  -xvf   压缩文件名.tar.gz  这个文件不是gzip格式的,使用tar -xvf来解压就好了。
 tar  -xvf   mysql8.tar.xz 
我的安装文件名上传前已经重新命名“mysql8.tar.xz”.

参考运行结果:
在这里插入图片描述

 (3)  修改解压后文件夹名:
  利用命令:mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql8 或者Xftp工具 重命名
 mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql8

最终成果:
在这里插入图片描述
在这里插入图片描述
重命名的目的方便修改配置文件,自己安装的mysql 服务器配置基本都一个模式下来,方便维护。

2.1.3、分别创建用户组以及用户并授权(如果提示已存在说明之前有创建过了)—目的为了安全

 建立mysql组  :命令 groupadd 组名  
 建立mysql用户: 命令  useradd -g 组名 用户名 
 用户名建议用mysql 

(1) 执行下面代码 增加 mysqlgroup 组

 groupadd mysqlgroup

(2) 执行下面代码 在 mysqlgroup 组增加 mysql用户 (假如不用mysqlsql修改后会引起初始化警告错误)

 useradd -g mysqlgroup  mysql  

(3) 进行用户授权

 chown -R mysql.mysqlgroup /usr/local/mysql/mysql8
 chown -R mysql.mysqlgroup /var/log/mysql

参考运行结果:
在这里插入图片描述

2.1.4、 配置环境,编辑/etc/profile文件

命令 vim /etc/profile
 vim /etc/profile

(按键 insert 后向下移动光标到最后一行,换行加入下面代码 ;esc 按键 打出“:wq”,用来保存文件并退出)
在最后一行加

 export PATH=$PATH:/usr/local/mysql/mysql8/bin:/usr/local/mysql/mysql8/lib

添加好后不要忘记刷新一下

 source /etc/profile

查看环境变量是否添加成功
命令 echo $PATH

 echo $PATH

参考运行结果:
在这里插入图片描述

2.1.5、 编辑my.cnf文件 (或者直接上传编辑好的my.cnf文件)

注意相关目录根据自己的进行修改。

[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock

[mysqld]
#port=3306
#server-id=3306
#skip-grant-tables
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql/mysql8
datadir=/usr/local/mysql/data
log-bin=/usr/local/mysql/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
#default_authentication_plugin=mysql_native_password
#“default_authentication_plugin”已被弃用,将在未来版本中删除。请改用authentication_policy。
authentication_policy= mysql_native_password
#symbolic-links=0
#默认情况下,使用--skip符号链接(或等效链接)禁用符号链接。考虑不使用此选项,因为它已被弃用,将在将来的版本中删除。 
# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid

#
# include all files from the config directory


2.1.6、 初始化数据库

(注意修改自己的目录)
(方法一)切换到 /usr/local/mysql/mysql8/bin 目录

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

(方法二)运行命令 mysqld --user=mysql --basedir=/usr/local/mysql/mysql8 --datadir=/usr/local/mysql/data/ --initialize

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

参考执行结果:
在这里插入图片描述
注意:最后面一行 root@localhost: 后面是对应的密码 LfesoHkn,3Jv

2.1.7、 初始化数据库 增加开机启动服务

(1) 将服务文件拷贝到init.d下,并重命名为mysql

cp /usr/local/mysql/mysql8/support-files/mysql.server /etc/init.d/mysql

(2) 赋予可执行权限

chmod +x /etc/init.d/mysql

(3) 添加服务

chkconfig --add mysql

(4) 显示服务列表

chkconfig --list

(5) 查看启动项:

chkconfig --list | grep -i mysql

(6) 检查一下/var/lib/mysql是否存在,否则进行创建

mkdir /var/lib/mysql 

(7) 授权

chown -R mysql:mysqlgroup /var/lib/mysql/ 

(8) 启动数据库,有SUCCESS字眼说明MySQL安装完成
命令 service mysql start

service mysql start 

3、配置Mysql、防火墙

3.1、配置压缩TAR存档版的mysql

3.1.1、修改默认密码

(1) 登录mysql

 mysql -uroot -p

输入mysql 初始化后的密码
(2)运行sql语句

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

(3) 执行flush privileges; 使密码生效

flush privileges;

(4) 选择数据库

 use mysql;

(5) 再修改远程连接并生效

update user set host='%' where user='root';

(6) 执行提交命令,搞定!

flush privileges;

(7) 查看用户是否支持远程连接

select host, user ,authentication_string, plugin from user;

参考执行界面:
在这里插入图片描述

3.2、 配置linux防火墙

3.2.1、centos 系统防火墙打开3306端口 (如打开跳过)

(1) 查看firewall的状态

 firewall-cmd --state

(2) 开放80端口

firewall-cmd --permanent --add-port=3306/tcp

(3) 查看防火墙的开放的端口

firewall-cmd --permanent --list-ports

(4) 重启防火墙(修改配置后要重启防火墙)

firewall-cmd --reload

参考界面:
在这里插入图片描述
最后就可以使用root账号去登录mysql了。如果有遇到问题的小伙伴评论留言,文中如有遗漏错误,欢迎指正。

3、常见错误

3.1、缺少libncurses.so.5

我用的腾讯云服务器
执行命令:mysql -u root -p
出现错误:error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file
在这里插入图片描述
centos 系统解决方法:

yum provides libncurses.so.5
yum provides libncurses.so.5

ubuntu系统解决

sudo apt install apt-file
sudo apt-file update
sudo apt-file find libncurses.so.5
sudo apt install libncurses5
sudo apt install libncurses*

3.2、缺少目标文件夹

mysql 默认日志放在/var/log/mysql/文件夹下,初始化之前需要人工新建。
错误提示 /var/log/mysql/mysql.log’ not found (OS errno 2 - No such file or directory)
解决方法:创建该文件夹。

3.2、my.cnf 里面mysql 用户名如果和新建的不一致就会产生下面错误。

错误界面
在这里插入图片描述
正确界面:
在这里插入图片描述
解决方法:my.cnf 里面的参数user=mysql 与新建的mysql 用户名保持一致。 最好就用mysql 否则初始化也出现警告错误。

3.2、配置文件参数舍弃

#“default_authentication_plugin”已被弃用,将在未来版本中删除。请改用authentication_policy。
authentication_policy= mysql_native_password
#symbolic-links=0
#默认情况下,使用–skip符号链接(或等效链接)禁用符号链接。考虑不使用此选项,因为它已被弃用,将在将来的版本中删除。
中文标注的需要修改,因为mysql 8.0.30 以后不支持了。

3.2、解压错误

假如使用tar -zxvf 压缩文件名.tar.gz会出现如下错误:
在这里插入图片描述
原因这个文件不是gzip格式的,不能使用tar -zxvf 来解压缩
解决方法:使用tar -xvf来解压就好了。
命令:tar -xvf 压缩文件名.tar.gz

 tar  -xvf   mysql8.tar.xz