Linux下安装MySQL 8.0

1、切换到/usr/soft

注:本人比较喜欢将需要安装的软件放到/usr/soft下面,如果没有soft文件夹可以,创建一个 mkdir soft 

cd /usr/soft

2、下载mysql8.0安装包

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

如果下载不了可以通过此链接下载:mysql8.0.20安装包下载

3、解压mysql8.0安装包

tar -xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz

4、 重命名解压出来的文件夹,这里改成mysql8.0.20

mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql8.0.20

5、在/usr/soft/mysql8.0.20文件夹里面创建data文件夹,用来存放数据库文件

mkdir data

6、分别创建MySQL的用户组和用户名(如果提示已存在说明之前有创建过了)

#创建用户组
groupadd mysql

#创建用户
useradd -g mysql mysql

7、授权刚刚新建的用户

#-R 处理指定目录以及其子目录下的所有文件
chown -R mysql.mysql /usr/soft/mysql8.0.20

chmod 750 /usr/soft/mysql8.0.20/data -R

 注:需要了解chmod 750的意思可以查看另一篇博客:linux chmod 755 ,750,777_feritylamb的博客-CSDN博客

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

vim /etc/profile

在最后一行加
export PATH=$PATH:/usr/soft/mysql8.0.20/bin:/usr/soft/mysql8.0.20/lib,然后按ESC,输入:wq回车保存

别忘了刷新配置文件:source /etc/profile

9、编辑my.cnf文件

vim /etc/my.cnf

 按下面复制进去就好了,#号开头的不用管,一样,添加完之后,换行,打出“:wq”,用来保存文件并退出

[mysql]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.socket

[client]
port=3306
socket=/var/lib/mysql/mysql.socket          

[mysqld]
port=3306
server-id=3306
user=mysql
general_log=1
general_log_file=/var/log/mysql/mysql.log    #如果系统中不存在需要自己创建
socket=/var/lib/mysql/mysql.socket
basedir=/usr/soft/mysql8.0.20
datadir=/usr/soft/mysql8.0.20/data
log-bin=/usr/soft/mysql8.0.20/data/mysql-bin
innodb_data_home_dir=/usr/soft/mysql8.0.20/data
innodb_log_group_home_dir=/usr/soft/mysql8.0.20/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
symbolic-links=0
default_authentication_plugin=mysql_native_password

[mysqld_safe]
log-error=/usr/soft/mysql8.0.20/data/mysql.log
pid-file=/usr/soft/mysql8.0.20/data/mysql.pid

10、切换到/usr/soft/mysql8.0.20/bin目录下 

cd bin

11、 初始化基础信息,得到数据库的初始密码(在/usr/soft/mysql8.0.20/bin目录下执行)

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

注:Linux下安装MySQL 8.0_第1张图片
该命令执行时会有 mysqld: File '/var/log/mysql/mysql.log' not found (OS errno 13 - Permission denied) 的错误,这个错误处理的方式是,首先查看/var/log/mysql文件夹是否存在,如果不存在则创建一个,然后将创建的文件夹授权给mysql账户(命令:chown -R mysql:mysql /var/log/mysql/

执行命令提示(mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory)这个错误,是由于内容缺少了libaio.so.1的依赖库,所以进行安装

 yum install -y libaio  

安装成功以后即可正常启动了。

chown -R mysql.mysql /var/log/mysql

chmod 750 /var/log/mysql -R

如图,复制出红框的初始密码,保存到本地,后面需要使用到Linux下安装MySQL 8.0_第2张图片

注意:如果因为路径等各种问题需要重新初始化的,需要清空上面创建的data文件,在data所在的目录下使用 rm -rf data 命令 

12、复制 mysql.server 文件,在/usr/soft/mysql8.0.20目录下执行

cp -a ./support-files/mysql.server /etc/init.d/mysql 

cp -a ./support-files/mysql.server /etc/init.d/mysqld

13、赋予权限

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

14、检查一下/var/lib/mysql是否存在,否则进行创建

mkdir /var/lib/mysql 

#再赋予权限
chown -R mysql:mysql /var/lib/mysql/ 

15、启动数据库,有SUCCESS字眼说明MySQL安装完成

service mysql start 

 注意:如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是端口被占用,使用lsof -i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill PID(进程号)杀掉进程,重新执行service mysql start

修改密码,并设置远程连接(为了可以在别的机器下面连接该mysql)

16、修改数据库root账号的密码,并设置可以远程访问(因为root默认是不能远程访问的)

mysql -uroot -p 回车后会提示输入root的密码

#修改数据库root账号的密码,并设置可以远程访问(因为root默认是不能远程访问的)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

#选择数据库
use mysql;

#再修改远程连接并生效
update user set host='%' where user='root';

#执行提交命令,搞定!
flush privileges;

 17、设置开机启动

 (1)进入mysql安装目录

cd /usr/soft/mysql8.0.20

(2)我们设置开机启动需要将mysql.server 文件复制到 /etc/rc.d/init.d/ 目录下mysql 文件 我们的mysql.server 文件一般都在安装的根目录下的 support-files 目录下 

cp ./support-files/mysql.server /etc/rc.d/init.d/mysql

(3) 复制成功后我们需要给赋予权限

chmod +x /etc/init.d/mysql

(4) 添加为服务

chkconfig --add mysql

 (5)查看服务列表

chkconfig --list

Linux下安装MySQL 8.0_第3张图片

看到3、4、5状态为开或者为 on 则表示成功。 如果是 关或者 off 则执行一下 

chkconfig --level 345 mysqld on

最后reboot重启计算机试试效果 

 我在启动的时候会提示,ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的错误,原因时在/etc/my.cnf文件中【mysql】中没有加上  socket=/var/lib/mysql/mysql.socket  ,导致的最后加上这个语句,然后重启就解决问题了。

最后就可以使用root账号去登录mysql了。如果有遇到问题的小伙伴评论留言,文中如有遗漏错误,欢迎指正。 

题外:
给mysql创建新的数据库用户并授予权限

1)创建用户(名称随意,这里的用户名称为mysql)并可以远程访问
CREATE user 'mysql'@'%'; 
#修改密码
alter user 'mysql'@'%' identified with mysql_native_password by 'tcl.2021'; 

2)创建新的数据库
#create database 数据库名 default character set utf8mb4 collate utf8mb4_unicode_ci;


3)把新的数据库授权给新用户
#将test库的所有权限赋予mysql用户
grant all privileges on test.* to "mysql"@"%";
grant all privileges on test.* to "tcl"@"%";

4)、刷新权限
flush privileges; 

mysql8.0版本的数据库需要用nacicat连接时,建议使用最新版本的nacicat,我使用的11.1.13

版本无法连接,但是使用navicat16.0.11版本可以连接

你可能感兴趣的:(mysql,linux,mysql,运维)