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
注:
该命令执行时会有 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
注意:如果因为路径等各种问题需要重新初始化的,需要清空上面创建的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
看到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版本可以连接