Centos8安装MySQL(亲测有效)

1、下载压缩包:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar

2、上传到服务器

命令:rz

3、解压

tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar 

4、按顺序安装

rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm

如果安装过程中出现这个错误就在后面添加 --force --nodeps,这可能是由于yum安装了旧版本的GPG keys造成的

 5、配置·MySQL

vim /etc/my.cnf

添加这三行

skip-grant-tables
character_set_server=utf8
init_connect='SET NAMES utf8'

skip-grant-tables:跳过登录验证

character_set_server=utf8:设置默认字符集UTF-8

init_connect='SET NAMES utf8':设置默认字符集UTF-8

6、设置开机启动

systemctl start mysqld.service

启动mysql

mysql

 设置密码

update mysql.user set authentication_string=password('123456') where user='root';

 立即生效

flush privileges;

退出mysql

exit

停止mysql服务

systemctl stop mysqld.service

重启mysql服务

systemctl start mysqld.service

查看mysql运行状态

systemctl status mysqld.service

如果输入其他命令出错,再重设密码

set password=password('123456');

查看密码策略

SHOW VARIABLES LIKE 'validate_password%'; 

1)、validate_password_length  固定密码的总长度;
2)、validate_password_dictionary_file 指定密码验证的文件路径;
3)、validate_password_mixed_case_count  整个密码中至少要包含大/小写字母的总个数;
4)、validate_password_number_count  整个密码中至少要包含阿拉伯数字的个数;
5)、validate_password_policy 指定密码的强度验证等级,默认为 MEDIUM;

设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 

set global validate_password_policy=LOW;

 密码长度改为6位

set global validate_password_length=6;

查看端口号

show global variables like 'port';

开放端口号

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

重启防火墙

firewall-cmd --reload

 开启mysql的远程访问

mysql> grant all privileges on *.* to 'root'@'%' identified by '你的密码' with grant option;

然后再输入下面命令,刷新授权

mysql> flush privileges;

此步操作,退出mysql也可以。

如果不能远程连接MySQL数据库,可能导致的原因有三点:

1、本机上防火墙没有开放3306端口,需要自己配置入站规则

  • 开放端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent

       然后重启防火墙:firewall-cmd --reload

  • 或者关闭本机防火墙

       关闭防火墙命令:systemctl stop firewalld

2、linux 服务器上的 iptables 防火墙没有开放3306端口,  或者关闭服务器上的防火墙。

打开/etc/sysconfig/iptables

在"-A INPUT –m state --state NEW –m tcp –p –dport 22 –j ACCEPT",下添加:

 -A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT

3、没有给mysql用户远程权限,

  • mysql> USE mysql; -- 切换到 mysql DB

       Database changed

  • mysql> SELECT User, Password, Host FROM user; -- 查看现有用户,密码及允许连接的主机

       +------+----------+-----------+
       | User | Password | Host      |
       +------+----------+-----------+
       | root |          | localhost |
       +------+----------+-----------+
       1 row in set (0.00 sec)

  • mysql> grant all privileges on *.* to 'root'@'%' identified by '123123' with grant option;
  • mysql> -- 只有一个默认的 root 用户, 密码为空, 只允许 localhost 连接
  • mysql> -- 下面我们另外添加一个新的 root 用户, 密码为123123, 只允许 192.168.1.100 连接
  • mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '123123' WITH GRANT OPTION;
  • mysql> -- @'192.168.1.100'可以替换为@‘%’就可任意ip访问,当然我们也可以直接用 UPDATE 更新 root 用户 Host, 但不推荐, SQL如下:
  • mysql> -- UPDATE user SET Host='192.168.1.100' WHERE User='root' AND Host='localhost' LIMIT 1;
  • mysql> flush privileges;

      Query OK, 0 rows affected (0.00 sec)

如果前面三种还是不能解决的话,并且你是阿里云服务器,那么你看这里↓↓↓

进入云服务器管理控制台--》网络与安全--》安全组--》

创建安全组--》添加访问规则

这个时候你再去连接数据库,连接成功~~~

猜你喜欢

转载自blog.csdn.net/qq_43037478/article/details/114761104