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)
如果前面三种还是不能解决的话,并且你是阿里云服务器,那么你看这里↓↓↓
进入云服务器管理控制台—》网络与安全—》安全组—》
创建安全组—》添加访问规则
这个时候你再去连接数据库,连接成功~~~
还没有评论,来说两句吧...