感谢大佬分享
本文以CentOS 8
为例(CentOS 8.x亲测可用,其他CentOS版本未测试),在Linux下安装MySQL-8.0.21
安装的mysql 版本是:mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
使用root
权限操作
前言:
下载安装mysql之前先检查有没有一些未安装完成的残留mysql文件以及是否已经安装过mysql数据库:
第一步:先执行 rpm -qa | grep mysql
查看是否安装。
第二步:若安装过需要卸载,执行 rpm -e --nodeps
数据库名称。
第三步:强制删除所有mysql相关文件。首先执行 whereis mysql
查看mysql位置,再次执行 find / -name mysql
查看mysql所有相关文件。
第四步:执行 find / -name mysql | xargs rm -rf
删除mysql相关文件。
1.下载mysql压缩包
方法一:
注:
上图显示第一个是二进制源码包,第二个是二进制测试包,第三个是源码包。
我们选择第一个二进制版本的mysql是已经编译好的,无需 configure ,make make install 等步骤,只需配置一下即可使用,卸载也方便,直接删除即可。
可以自行调整编译参数,最大化地定制安装结果。
下载完成之后,将压缩包上传到/usr/local目录下。
方法二:
在/usr/local
目录下执行命令:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
会自动将压缩包下载到/usr/local
目录下
上面两种方法,最终目的都是将压缩包放到/usr/local
目录下。
2.解压该压缩包并重命名文件夹为 mysql8
解压:
.xz格式使用命令: tar -Jxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz
.gz格式使用命令: tar -zxvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.gz
移动
若上传的地方不是/uar/local/路径可以用mv命令移动:
mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/local/
重命名
mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql8(推荐)
或者使用软连接命令 :
ln -s mysql-8.0.21-linux-glibc2.12-x86_64 mysql8
注:之后就可以将压缩包删除了(可删可不删):rm -rf
压缩包名称
3.安装初始化数据库
本人mysql的目录是:/usr/local
,MySQL的根目录是:/usr/local/mysql8
第一步:切换到根目录,创建data文件:mkdir data
第二部:创建用户组:
groupadd mysql
第三步:创建用户:
useradd -g mysql mysql
第四步:授予权限:
chown -R mysql.mysql /usr/local/mysql8/
第五步:初始化数据库1:
mkdir mysql_install_db
第六步:初始化数据库2:
chmod 777 ./mysql_install_db
第七步:初始化数据库3:
bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8 --datadir=/usr/local/mysql8/data
(初始化之后,最后面有一串密码,一定记下来)
【注:若是报错(bin/mysqld: error while loading shared libraries: libaio.so.1:
cannot open shared object file: No such file or
directory),说明缺少依赖。执行:yum install -y libaio
就可以了】
第八步:赋值执行连接:
cp /usr/local/mysql8/support-files/mysql.server /etc/init.d/mysqld
4.编辑conf文件
第一步:输入 vi /etc/my.cnf
或者 vim /etc/my.cnf
第二步:将下面内容粘贴进去:
[mysqld]
basedir = /usr/local/mysql8
datadir = /usr/local/mysql8/data
socket = /usr/local/mysql8/mysql.sock
character-set-server=utf8
port = 3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[client]
socket = /usr/local/mysql8/mysql.sock
default-character-set=utf8
第三步:编辑之后,按Esx按钮,输入 :wq 退到控制台。
注:若是出现编辑之后没有权限保存的问题
即:E45: ‘readonly’ option is set (add ! to override)
步骤:
1.按Esc键
2.输入 :set noreadonly
3.然后就能输入 :wq 来保存文件了。
5.添加mysql服务并添加状态
第一步:chmod +x /etc/rc.d/init.d/mysqld
第二步:chkconfig --add mysqld
查看状态:chkconfig --list mysqld
6.编辑环境
第一步:输入 vi /etc/profile
或 vim /etc/profile
第二步(在profile最后,一定是最后添加):
export PATH=$PATH:/usr/local/mysql8/bin:/usr/local/mysql8/lib
第三步(加载配置):source /etc/profile
7.启动服务
注:
mysql版本在8.0.21之后
,启动的姿势与之前版本不一定一样,所以这里使用的命令是:
systemctl start mysqld
当然,如果安装的是8.0.21之前
的版本,可以使用命令:
service mysql start
启动之后,通过命令 systemctl status mysqld
查看服务
8.登录数据库
第一步:输入 mysql -uroot -p
第二步:输入密码(就是刚才第三项让记住的那个密码)
第三步:alter user user() identified by '你的密码';
到这里就已经完成了!
注:如果在登录mysql的时候报这个错:
Can’t connect to local MySQL server through
socket '/usr/local/mysql8/mysql.sock
大概率是配置的时候路径填错了导致的,直接从头捋一遍,把每个步骤中添加的配置重新检查一遍。最后,service mysqld restart
重启一下数据库,然后再ls
查看一下mysql根目录是否有mysql.sock
文件,若是有,则可以继续登录操作了。
超级大彩蛋
如果需要使用navicat等工具进行远程连接,那么接下来还有几个步骤去做:
第一步:确认并关闭服务器防火墙,或者去服务器控制台的配置规则中开放端口。(具体怎么操作,需要按照各自的服务器说明执行。)
第二步:进入mysql -uroot -p 进入mysql控制台。
第三步:show databases;
第四步:use mysql;
第五步:show tables;
第六步:select Host,User from user;
第七步:update user set Host = ‘%’ where User = ‘root’;
第八步:select Host, User from user;
第九步:flush privileges;
小彩蛋:
如果navicat连接mysql的时候报:
以上报错是由于目前已有的客户端连接软件还不支持Mysql8
新增加的加密方式caching_sha2_password
,所以我们需要修改用户的加密方式,将其改为老的加密验证方式。
首先,我们登录root用户
执行命令use mysql
再执行select user,plugin from user where user='root';
可以看到当前用户的加密方式为caching_sha2_password
接着执行执行命令
alter user ‘root’@’%’ identified with mysql_native_password by ‘数据库密码’;
或者
alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘数据库密码’;
将用户的加密方式改为mysql_native_password
。
最后,执行命令flush privileges
使权限配置项立即生效。
再次尝试连接Mysql,连接成功。