链接:https://dev.mysql.com/downloads/mysql/
点击 Download,如下图:
没有登录,点击 “No thanks,just start my downlaod.” 即可下载
解压命令:tar -xvf mysql-8.0.34-linux-glibc2.28-x86_64.tar -C /opt
重命名:mv mysql-8.0.34-linux-glibc2.28-x86_64 mysql8
cd /opt/mysql8/
MYSQL_HOME=/opt/mysql8/bin
PATH= P A T H : PATH: PATH:MYSQL_HOME
export MYSQL_HOME PATH
groupadd mysql
useradd -g mysql mysql
[root@localhost module]# chmod -R 755 mysql8
查询是否安装libaio依赖包
yum search libaio
如果没安装,可以用下面命令安装:
mysqld --user=mysql --basedir=/opt/mysql8 --datadir=/opt/mysql8/data --initialize
红色箭头指向的是mysql数据库登录的临时密码,保存备用,每个人安装生成的临时密码不一样。
sh /opt/mysql8/support-files/mysql.server start
上面启动mysql服务命令是会报错的,因为没有修改mysql的配置文件,报错内容大致如下:
vim /opt/mysql8/support-files/mysql.server
修改以下属性:
basedir=/opt/mysql8
datadir=/opt/mysql8/data
mysqld_pid_file_path=/opt/mysql8/data/mysqld_pid
如下图所示:
接下来,复制进程文件
cp /opt/mysql8/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
将mysql服务加到系统服务中
chkconfig --add mysqld
开机自启动
chkconfig mysqld on
这里下载的mysql8.0.23版本并没有这个my.cnf文件,因此直接创建的。
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
basedir=/opt/mysql8
datadir=/opt/mysql8/data
socket=/tmp/mysql.sock
user=mysql
port=3306
character_set_server=utf8
# symbolic-links=0
# bind-address=0.0.0.0
[mysqld_safe]
log-error=/opt/mysql8/data/error.log
pid-file=/opt/mysql8/data/mysqld.pid
tmpdir=/tmp
然后,授权文件my.cnf
[root@localhost etc]# chown mysql:mysql /etc/my.cnf
[root@localhost etc]# chown mysql /etc/my.cnf
[root@localhost etc]# chmod 755 /etc/my.cnf
查看服务:service mysqld status
停止服务:service mysqld stop
启动服务:service mysqld start
mysql -uroot -p
如果出现如下错误:./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决办法:yum install libncurses* 完美解决!
use mysql
修改初始密码: alter user ‘root’@‘localhost’ identified by ‘root’;
刷新:flush privileges;
至此,完成mysql8.0.23的安装。
原因一:由于mysql 没有开启对外访问权限
原因二:由于防火墙没有对外开放mysql的默认端口3306导致
原因三:由于阿里云或者是腾讯云的安全组规则没有开放3306端口
netstat -apn | grep 3306
如果MySQL的默认bind-address(监听IP地址)为127.0.0.1,即只能为本机提供服务,禁止远程连接。则只需要如下解决:
[mysqld]
bind-address = 0.0.0.0
我这里的原因是防火墙没有放行。
yum -y install iptables-services
需要一点时间,耐心等待
systemctl start iptables
vim /etc/sysconfig/iptables(可以不配置)
然后再重启Linux,
进行Navicat Premium连接,提示一下错误:
原因分析:
其实是mysql8.0版更换了新的身份验证是(caching_sha2_password)之前身份验证是(mysql_native_password),Navicat,和SQLyog客户端软件其实是不支持新的身份验证,也就是说新的身份验证找不到(caching_sha2_password),既然知道了是这个问题,那么我们就把登录密码加密规则改回(mysql_native_password)即可。
mysql -uroot -p
alter user ‘root’@‘%’ identified by ‘password’ password expire never;
alter user ‘root’@‘%’ identified with mysql_native_password by ‘password’;
flush privileges;
alter user ‘root’@‘%’ identified by ‘root’;