
1. 安装前准备
1.1 Linux系统及工具的准备
① 查看及修改IP地址
-
打开 Linux IP 地址的配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
可以看到笔者虚拟机的 IP 地址为 192.168.148.100 。
-
如果修改了该配置文件,需要重启网络服务才会生效:
systemctl restart network
1.2 查看是否安装过MySQL
-
RPM (Rep-Hat Package Manager) RPM软件包管理器,是红帽公司 Linux 用于管理和安装软件的工具。
-
安装前先检测当前系统中是否安装 MySQL 数据库:
命令 作用 rpm -qa 查询当前系统中安装的所有软件 rpm -qa | grep mysql 查询当前系统中安装的名称带mysql的软件 rpm -qa | grep mariadb 查询当前系统中安装的名称带mariadb的软件 -
如果你是用 rpm 安装,检查一下 RPM PACKAGE:
rpm -qa | grep -i mysql
-
检查 mysql service:
systemctl status mysqld.service
-
如果上面两条指令执行结果如下图所示:
就说明你的 Linux 上并没有安装过 MySQL 。
1.3 MySQL卸载
- 如果你的 Linux 安装过,只需要按下面步骤进行卸载即可。
① 关闭MySQL服务
systemctl stop mysqld.service
② 查看当前MySQL安装状况
rpm -qa | grep -i mysql
# 或
yum list installed | grep mysql
③ 卸载上述命令查询出的已安装程序
yum remove mysql-xxx mysql-xxx
④ 删除MySQL相关文件
- 查找相关文件:
find / -name mysql
- 删除上述命令查找出的相关文件:
rm -rf xxx
⑤ 删除my.cnf
rm -rf /etc/my.cnf
1.4 MariaDB卸载
-
如果当前系统中已经安装有 MySQL 数据库,安装将失败。CentOS 7 自带 mariadb,与 MySQL 数据库冲突。
-
检测 Linux 系统中是否安装了 mariadb :
rpm -qa | grep mariadb
-
已经按照了 mariadb 5.5.68 ,必须先将其卸载掉:
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
-
卸载完再重新查询就不会再有 mariadb 了。
2. MySQL的Linux版安装
2.1 MySQL的四大版本
- MySQL Community Server 社区版本:开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。
- MySQL Enterprise Edition企业版本:需付费,不能在线下载,可以试用30天。提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可靠性要求较高的企业客户。
- MySQL Cluster 集群版:开源免费。用于架设集群服务器,可将几个MySQL Server 封装成一个Server。需要在社区版或企业版的基础上使用。
- MySQL Cluster CE 高级集群版:需付费。
2.2 下载MySQL指定版本
-
打开 MySQL 官网:MySQL :: Download MySQL Community Server 。
-
选择 Red Hat Enterprise Linux 7 。笔者这里下载的是官网最新的 8.0.31 版本:
-
选择 ”RPM Bundle“ 进行下载:
-
下载好后,解压,发现解压出来的还是一堆压缩包,这些并不是全部都需要的。我们只需要下面六个压缩包即可:
-
使用 MobaXTerm 自带的上传工具将上述 5 个 MySQL 安装包上传至 Linux 服务器的
/opt
目录下。 -
成功上传到
/opt
目录下:
2.3 检查依赖
① 检查/tmpl临时目录权限(必不可少)
-
由于 MySQL 安装过程中,会通过 MySQL 用户在
/tmp
目录下新建tmp_db
文件,所以请给/tmp
较大的权限。执行:chmod -R 777 /tmp
② 安装前,检查依赖
- 检查是否存在
libaio
包:
rpm -qa | grep libaio
-
如果存在
libaio
包如下: -
检查是否存在
net-tools
包:rpm -qa | grep net-tools
-
如果存在
net-tools
包如下:
2.4 安装过程
-
由于 rpm 安装存在依赖关系,因此必须严格按照以下顺序执行:
rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm
-
如果你安装时遇到下面报错:
error: Failed dependencies: mysql-community-icu-data-files = 8.0.31-1.el7 is needed by mysql-community-server-8.0.31-1.el7.x86_64
这是需要 6 个压缩包,再把
mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpm
上传到服务器,在mysql-community-server-8.0.31-1.el7.x86_64.rpm
前安装即可。 -
如上图所示,MySQL 就安装完毕了。
2.5 检验
-
执行如下命令查询 MySQL 版本信息,如果成功表示安装 MySQL 成功。
mysql --version #或 mysqladmin --version
-
执行如下命令,查看是否安装成功。需要增加
-i
不用去区分大小写,否则搜索不到。rpm -qa | grep -i mysql
-
如果你出现的结果和上面两幅图一样,恭喜你安装成功。
2.6 服务初始化
-
为了保证数据库目录与文件的所有者为 MySQL 登录用户,如果你是以 root 身份运行 MySQL 服务,需要执行下面的命令初始化:
mysqld --initialize --user=mysql
【小贴士】
--initialize
选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新的密码。生成的临时密码会往日志中记录一份。
-
查看密码:
cat /var/log/mysqld.log
root@localhost:
后面就是初始化的密码。要记住,稍后是作为 MySQL 登录的密码。
2.7 查看MySQL运行状态并启动
systemctl status mysqld
-
此时 MySQL 服务还没有开启。
-
开启 MySQL 服务:
systemctl start mysqld
此时 MySQL 服务就已经启动了。
2.8 设置开机自启动
-
首先查看 MySQL 服务是否开机自启动:
systemctl list-unit-files | grep mysqld.service
enabled
表示 MySQL 服务开机自启动。 -
如不是
enabled
可以运行如下命令设置开机自启动:systemctl enable mysqld.service
-
如果想关闭开机自启动:
systemctl disabel mysqld.service
-
我们可以通过下面指令查看 MySQL 服务是否启动:
netstat -tunlp | grep mysql
可以看到,MySQL 服务已经启动了,占用的端口号是经典的 3306 。
-
到此,MySQL Linux 系统下的安装就完成了。
3. MySQL首次登录
3.1 首次登录
-
把上面提到的生成的密码
B.kKtpw3*Lb:
作为登录密码:mysql -uroot -p
这样就登录成功了。
3.2 修改初始密码
-
首次登录后,是没有办法正常使用的。MySQL 会强制你修改初始密码。
-
修改密码:
alter user 'root'@'localhost' identified by 'xsh981104';
-
这样就修改成功了。然后退出 MySQL :
quit
-
再次登录:
mysql -uroot -p
输入新密码,就能登录成功:
-
此时,MySQL 就能正常使用了:
# 查询数据库 show databases;
-
由于 MySQL 8.0 默认的字符集就是 UTF-8 ,因此不需要像 MySQL 5.7 那样修改字符集了。
4. SQLyog远程连接
- 我们可以在 Windows 电脑上,使用 SQLyog 图形化软件远程连接服务器上的 MySQL 。
4.1 防火墙操作
-
先来查看服务器的防火墙状态:
systemctl status firewall
说明防火墙已经打开,外界无法访问。
-
但是,为了保证系统安全,服务器的防火墙不建议关闭。在实际生产环境中,一般是开启防火墙,只对外开放特定的端口。
-
我们只需要把 MySQL 所用的 3306 端口对外开放,在保证系统安全的同时,又能让用户正常访问服务器:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
然后,还必须输入下面的命令才能立即生效:
firewall-cmd --reload
-
我们还可以使用下面的命令来查看 Linux 系统对外开放了哪些端口:
firewall-cmd --zone=public --list-ports
-
至此,Linux 作为 MySQL 服务器的防火墙配置就设置好了。
4.2 开启远程访问权限
-
默认情况下,服务器上的 MySQL 是不允许 root 用户远程连接的。我们要修改这个默认设置。
-
进入服务器的 MySQL :
mysql -uroot -p
-
查看有什么数据库:
show databases;
-
使用数据库
mysql
:use mysql;
-
查询数据表
user
的host
和user
字段信息:select host, user from user;
-
上面第 4 行,意思是只允许 root 用户登录本机 (localhost) 。如果想要远程连接,则必须修改第 4 行的 ”localhost“ 为你要远程登录的电脑的 IP 。
update user set host = '192.168.1.%' where user = 'root';
这样修改后,就允许 MySQL 的 root 用户远程登录到 IP 地址为 192.168.1. 开头 (内网) 的任何一台电脑上了。在实际开发中,这里的 IP 地址会限制得更严格一些。由于笔者是学习阶段,因此就放得宽松些,允许任何远程电脑以 root 用户身份登录 MySQL :
update user set host = '%' where user = 'root';
-
再次查询:
select host, user from user;
该表已经成功修改了。
-
最后必须刷新,让权限生效:
flush privileges;
4.3 修改加密方式
-
因为 MySQL 8.0 的登录密码是使用 SHA2 算法加密的,如果直接远程登录会出现下面的问题:
-
因此我们要在服务器上,
mysql -uroot -p
登录 MySQL ,在 MySQL 中修执行以下语句:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的MySQL密码';
4.4 连接过程
-
点击 ”新建“ 来新建连接:
-
连接名称为远程服务器的 IP 地址:
-
填写好 ”主机地址“ 和密码,点击 ”SSH“ :
-
输入远程服务器主机的地址、用户名和开机登录密码:
-
然后回到 ”MySQL“ ,输入 MySQL 的用户名和密码,点击 ”测试连接“ :
-
如果出现下面的提示,则连接远程服务器成功:
-
点击 ”连接“ 即可进入 SQLyog 管理与操作远端服务器上的 MySQL :
-
成功远程登录:
-
至此,你就可以在 Windows 电脑上愉快地操控远端服务器上的