先下载mysql5.7,目前是市面上用5.7的还是很多,版本也是比较稳定且免费(虽然对于个人使用都是免费的)
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
下载完成后查看下载的是不是正确
ll -lht
解压
tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
安装新版mysql前,需将系统自带的mariadb-lib卸载
rpm -qa|grep mariadb
# 返回的是mariadb-libs-5.5.60-1.el7_5.x86_64,删除mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
严格按照顺序安装
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造成的
warning: mysql-community-libs-5.7.29-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.29-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-5.7.29-1.el7.x86_64
sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
sudo yum install mysql-community-server
如果报如下错
Downloading packages:
warning: /var/cache/yum/x86_64/7/mysql57-community/packages/
mysql-community-libs-compat-5.7.37-1.el7.x86_64.rpm:
Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 检索密钥
源 “MySQL 5.7 Community Server” 的 GPG 密钥已安装,但是不适用于此软件包。
请检查源的公钥 URL 是否配置正确。
或者配置跳过校验
vi /etc/yum.repos.d/mysql-community.repo
吧这个改成0 gpgcheck=0
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=0 #原来是1,改成0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
打开数据库配置文件
vi /etc/my.cnf
添加这几行,
skip-grant-tables
character_set_server=utf8
init_connect='SET NAMES utf8'
bind-address= 0.0.0.0
# bind-address默认情况下,该值设置为127.0.0.1(仅在本地主机中监听)。在此示例中,我们将值更改为0.0.0.0,将MySQL服务器设置为侦听所有IPv4接口。
如果有包含skip-networking的行,请删除该行或在行的开头添加#以将其注释掉。
设置开机启动
systemctl start mysqld.service
启动mysql
mysql
设置密码
update mysql.user set authentication_string=password('123456') where user='root';
授予远程访问权
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
其中:
database_name是用户将连接到的数据库的名称。
user_name是MySQL用户的名称。
ip_address是用户将要从中连接的 IP地址。使用%允许用户从任何IP地址进行连接。
user_password是用户密码。
立即生效
flush privileges;
FirewallD 是CentOS中的默认防火墙管理工具,要允许从Internet上的任何IP地址访问(非常不安全),开放端口,请输入:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议,3306为数据库一般的端口
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload
要允许从特定端口上的特定IP地址进行访问,您可以创建新的FirewallD区域或使用丰富规则。好创建一个名为mysqlzone的新区域
firewall-cmd --new-zone=mysqlzone --permanent
firewall-cmd --reload
firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
firewall-cmd --reload
要验证远程用户是否可以连接到MySQL服务器,请运行以下命令:
mysql -u user_name -h mysql_server_ip -p
其中user_name
是您被授予访问权限的用户名,mysql_server_ip
是运行MySQL服务器的主机的IP地址。
如果收到类似以下的错误,则说明端口3306未打开,或者MySQL服务器未监听IP地址。
ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"
以下错误表示您尝试登录的用户无权访问远程MySQL服务器。
"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server"
第一次部署mysql,花费了不少时间也差了不少资料。以上是部署过程及总结,部分内容借鉴了一些博客。