1.下载(社区版)
MySQL官网:https://dev.mysql.com/downloads/mysql/
选择对应系统版本的MySQL安装包,由于本人使用的是CentOS7,所以选择Red Hat7(CentOS是基于Red Hat的开源版本),另外不建议选择最新的版本,MySQL8在很多地方做了调整,有些语法变动,考虑项目升级成本建议选择低版本的,本文示例使用版本"5.7.28"
。
建议直接下载
rpm-bundle.tar
版本,不然通过yum到MySQL仓库下载很慢的,不如直接下载好后解压安装来的快
2.安装MySQL
1)查看并卸载当前已安装版本(CentOS自带mariadb)
yum查询、卸载方式:
[root@localhost ~]# yum list installed | grep mariadb
mariadb-libs.x86_64 1:5.5.64-1.el7 @anaconda
[root@localhost ~]# yum remove mariadb-libs.x86_64
rpm查询、卸载方式:
[root@localhost ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@localhost ~]# rpm -e mariadb-libs-5.5.64-1.el7.x86_64
以上提供两个卸载方式,二选一即可
删除mariadb配置文件:
rm -f /etc/my.cnf
删除mariadb数据目录:
rm -rf /var/lib/mysql/
2)解压tar包
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
[root@localhost software]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
mysql-community-embedded-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.28-1.el7.x86_64.rpm
mysql-community-libs-5.7.28-1.el7.x86_64.rpm
mysql-community-test-5.7.28-1.el7.x86_64.rpm
mysql-community-common-5.7.28-1.el7.x86_64.rpm
mysql-community-embedded-devel-5.7.28-1.el7.x86_64.rpm
mysql-community-client-5.7.28-1.el7.x86_64.rpm
mysql-community-server-5.7.28-1.el7.x86_64.rpm
3)安装MySQL
并非解压的所有rpm都需要安装,只用装如下最基础的就行了,其它的按需安装
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
3.数据库初始化
1)启动MySQL
systemctl start mysqld.service
或者
service mysqld start
扩展 :
查看服务运行状态:systemctl status mysqld.service
关闭服务:systemctl stop mysqld.service
重启服务:systemctl restart mysqld.service
2)修改密码
MySQL服务启动后需要修改初始密码。MySQL 默认创建了 root 用户的密码,这个密码打印在 MySQL 的日志文件/var/log/mysqld.log中,可以通过temporary password关键字来找出这个临时的密码:
grep 'temporary password' /var/log/mysqld.log
[root@localhost software]# grep 'temporary password' /var/log/mysqld.log
2020-01-02T02:17:59.530742Z 1 [Note] A temporary password is generated for root@localhost: P76M%iuqcovy
上面示例中"P76M%iuqcovy"
就是MySQL自动创建的初始密码,现用它来登录连接MySQL服务:
mysql -u root -p
登录后修改初始密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
如果遇到如下问题,可参考:解决方案
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
简单来说,就是需要把密码设置满足MySQL的密码策略(默认密码的长度最小值为 8 ,由 大/小写字母各一个 + 阿拉伯数字一个 + 特殊字符一个)
密码设置完后需重启MySQL服务:
systemctl restart mysqld.service
3)开放远程连接
MySQL默认只对本机开放连接,当需要别的主机连接数据库时则需要赋予其它主机访问数据库的权限。
开放远程连接给所有主机("%"
表示所有,"123456"为我设置的MySQL密码,需自行替换):
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
开放远程连接给某一个具体主机:
grant all privileges on . to ‘root’@‘192.168.0.1’ identified by ‘123456’ with grant option;
更改完后刷新权限:
flush privileges;
4)关闭防火墙或者开放MySQL端口
查看防火墙状态:
systemctl status firewalld
或者
firewall-cmd --state
开放MySQL端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
–permanet 参数表示永久生效
重新加载防火墙配置:
firewall-cmd --reload
可用如下命令查看系统中对外开放的端口:
firewall-cmd --list-ports
或者
netstat -talnp
5)连接测试
4.卸载
参考:https://blog.csdn.net/yuxielea/article/details/100551000
查询当前已安装版本:
rpm -qa|grep mysql
然后依次卸载:
rpm -e --nodeps xxx
例如:
[root@lee000 ~]# rpm -qa|grep mysql
mysql-community-client-5.7.28-1.el7.x86_64
mysql-community-common-5.7.28-1.el7.x86_64
mysql-community-libs-5.7.28-1.el7.x86_64
mysql-community-server-5.7.28-1.el7.x86_64
[root@lee000 ~]# rpm -e --nodeps mysql-community-client-5.7.28-1.el7.x86_64
[root@lee000 ~]# rpm -e --nodeps mysql-community-common-5.7.28-1.el7.x86_64
[root@lee000 ~]# rpm -e --nodeps mysql-community-libs-5.7.28-1.el7.x86_64
[root@lee000 ~]# rpm -e --nodeps mysql-community-server-5.7.28-1.el7.x86_64
[root@lee000 ~]# rpm -qa|grep mysql
[root@lee000 ~]#
卸载后可以再次查询已安装mysql是否还存在,不存在即卸载成功
5.扩展
MySQL默认端口为3306,但有时因为端口冲突等特别原因需要修改端口号,改一个配置即可:
vim /etc/my.cnf
追加端口配置:
port=3333
修改后需要重启服务:
systemctl restart mysqld.service
查看端口号:
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3333 |
+---------------+-------+
1 row in set (0.01 sec)