大家好,我是中国码农摘星人。
欢迎分享/收藏/赞/在看!
欢迎提出使用本篇文章安装 MySQL 时遇到的问题,本篇文章会持续更新…
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL 是最好的 RDBMS 应用软件之一。
网上关于 MySQL 的安装及配置参差不齐,且文章粗制滥造、华而不实。经过多次仔细考究、操作之后,完成了《 CentOS 下安装及配置 MySQL》,欢迎分享/收藏/赞/在看!
检查系统中是否有安装 mariadb,是否自带了 MySQL 以及相关安装包。
如果有的话则应先将其卸载: rpm -e --nodeps xxx
mysql -V
rpm -qa | grep mysql
rpm -qa | grep mariadb
当前笔者的服务器镜像版本是:CentOS 7.6
我想要装:MySQL 5.7
在 usr/local 目录下新建 mysql 目录
mkdir /usr/local/mysql
ll /usr/local
在该目录下,下载并安装 MySQL 官方的 Yum Repository(这里下载的是5.7版本的)
MySQL Yum Repository
wget https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
ll
yum -y install mysql57-community-release-el7-10.noarch.rpm
安装 MySQL 服务器
yum -y install mysql-community-server
****
【>>>步骤执行问题记录(持续更新…)>>>】
1.提示:
失败的软件包是:mysql-community-client-5.7.40-1.el7.x86_64
GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
执行如下,之后就可以重新安装
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
【<<<步骤执行问题记录(持续更新…)<<<】
安装完成,启动 MySQL 服务,并查看运行状态
systemctl start mysqld.service
systemctl status mysqld.service
找到初始密码,并登录数据库
grep "password" /var/log/mysqld.log
mysql -uroot -p
【>>>步骤执行问题记录(持续更新…)>>>】
【1.按要求输入临时密码后无法登录,提示:】
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
vim /etc/my.cnf
输入如下并保存退出:
skip-grant-tables
重新启动 MySQL:
systemctl restart mysqld
登录 MySQL,其中要求输入密码时一直按回车即可进入:
mysql -uroot -p
进入之后,修改 MySQL root 账户的密码:
use mysql;
update user set authentication_string = '' where user = 'root';
authentication_string = ’ ’ 把 root 密码设置为空
再次打开 my.cnf 配置文件,将刚才添加的内容删除:
vim /etc/my.cnf
skip-grant-tables
重启 MySQL 服务,进入 MySQL root 账户下即修改密码:
systemctl restart mysqld
mysql -uroot -p
# 一直按回车即可进入,之后可以正常修改密码
【<<<步骤执行问题记录(持续更新…)<<<】
修改密码为:root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
可以看到因密码过于简单而报出警告,我们先设置一个符合要求的密码:Root_123
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root_123';
顺带提一下,出现:
Your password does not satisfy the current policy requirements
,都是密码不符合密码策略,解决方法是要么符合该策略,要么修改密码策略。
查看 MySQL 初始的密码策略
SHOW VARIABLES LIKE 'validate_password%';
分别执行如下命令修改策略,修改后查看是否成功
set global validate_password.check_user_name=OFF
set global validate_password.length=4;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0;
set global validate_password.policy=LOW;
set global validate_password.special_char_count=0;
MySQL 密码策略相关参数
validate_password.dictionary_file 指定密码验证的文件路径
validate_password.length 固定密码的总长度
validate_password.mixed_case_count 整个密码中至少要包含大/小写字母的总个数
validate_password.number_count 整个密码中至少要包含阿拉伯数字的个数
validate_password.policy 指定密码的强度验证等级,默认为 MEDIUM
- LOW:只验证长度
- MEDIUM:验证长度、数字、大小写、特殊字符
- STRONG:验证长度、数字、大小写、特殊字符、字典文件
- validate_password_special_char_count 整个密码中至少要包含特殊字符的个数
现在可以修改密码为:root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
当前服务器只能访问其本地数据库,远程是连接不上的,因此要进行授权
*.*
可以使用所有数据库的所有数据表
'root'@'%'
任意 IP 可以使用 root 用户
IDENTIFIED BY 'xxx'
这里的 xxx 表示 root 用户登录 MySQL 的密码
flush privileges;
刷新,立即生效
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Root_123' WITH GRANT OPTION;
flush privileges;
开放阿里云服务器 3306 端口
CentOS 单机需要操作防火墙开放 3306 端口
# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 关闭3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
# 配置立即生效
firewall-cmd --reload
# 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
Navicat 新建连接,输入相关信息测试连接
这里附上今后可能会用到的配置信息
[mysqld]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 设置mysql的安装目录
basedir=D:\Java\mysql-8.0.12-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:\Java\mysql-8.0.12-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
停止 MySQL 服务,查看已下载的 MySQL 相关信息,并使用命令依次卸载
systemctl stop mysqld.service
rpm -qa | grep mysql
rpm -e --nodeps mysql-community-client-plugins-8.0.27-1.el8.x86_64
rpm -e --nodeps mysql80-community-release-el8-2.noarch
rpm -e --nodeps mysql-community-client-8.0.27-1.el8.x86_64
rpm -e --nodeps mysql-community-common-8.0.27-1.el8.x86_64
rpm -e --nodeps mysql-community-server-8.0.27-1.el8.x86_64
rpm -e --nodeps mysql-community-libs-8.0.27-1.el8.x86_64
mysql -V
mysql --help | grep MySQL
mysql> status;
mysql> select version();