1. 安装前准备


1.1 Linux系统及工具的准备


① 查看及修改IP地址

  • 打开 Linux IP 地址的配置文件:

    vim /etc/sysconfig/network-scripts/ifcfg-ens33
    

    image-20221101102149487

  • 可以看到笔者虚拟机的 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
    
  • 如果上面两条指令执行结果如下图所示:

    image-20221101104327211

    就说明你的 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
    

    image-20221031204024468

  • 已经按照了 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 版本:

    image-20221101112002790

  • 选择 ”RPM Bundle“ 进行下载:

    image-20221101112123299

  • 下载好后,解压,发现解压出来的还是一堆压缩包,这些并不是全部都需要的。我们只需要下面六个压缩包即可:

    image-20221101132314367

  • 使用 MobaXTerm 自带的上传工具将上述 5 个 MySQL 安装包上传至 Linux 服务器的 /opt 目录下。

    image-20221009093513645

  • 成功上传到 /opt 目录下:

    image-20221101132357337


2.3 检查依赖


① 检查/tmpl临时目录权限(必不可少)

  • 由于 MySQL 安装过程中,会通过 MySQL 用户在 /tmp 目录下新建 tmp_db 文件,所以请给 /tmp 较大的权限。执行:

    chmod -R 777 /tmp
    

    image-20221101130016832

② 安装前,检查依赖

  • 检查是否存在 libaio 包:
rpm -qa | grep libaio
  • 如果存在 libaio 包如下:

    image-20221101130341412

  • 检查是否存在 net-tools 包:

    rpm -qa | grep net-tools
    
  • 如果存在 net-tools 包如下:

    image-20221101130517657


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 前安装即可。

    image-20221101132602604

  • 如上图所示,MySQL 就安装完毕了。


2.5 检验

  • 执行如下命令查询 MySQL 版本信息,如果成功表示安装 MySQL 成功。

    mysql --version
    
    #或
    
    mysqladmin --version
    

    image-20221101132855997

  • 执行如下命令,查看是否安装成功。需要增加 -i 不用去区分大小写,否则搜索不到。

    rpm -qa | grep -i mysql
    

    image-20221101133040789

  • 如果你出现的结果和上面两幅图一样,恭喜你安装成功。


2.6 服务初始化

  • 为了保证数据库目录与文件的所有者为 MySQL 登录用户,如果你是以 root 身份运行 MySQL 服务,需要执行下面的命令初始化:

    mysqld --initialize --user=mysql
    

【小贴士】

  • --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将该密码标记为过期,登录后你需要设置一个新的密码。生成的临时密码会往日志中记录一份。
  • 查看密码:

    cat /var/log/mysqld.log
    

    image-20221101133616594

    root@localhost: 后面就是初始化的密码。要记住,稍后是作为 MySQL 登录的密码。


2.7 查看MySQL运行状态并启动

systemctl status mysqld

image-20221101133836285

  • 此时 MySQL 服务还没有开启。

  • 开启 MySQL 服务:

    systemctl start mysqld
    

    image-20221101133945168

    此时 MySQL 服务就已经启动了。


2.8 设置开机自启动

  • 首先查看 MySQL 服务是否开机自启动:

    systemctl list-unit-files | grep mysqld.service
    

    image-20221101134215574

    enabled 表示 MySQL 服务开机自启动。

  • 如不是 enabled 可以运行如下命令设置开机自启动:

    systemctl enable mysqld.service
    
  • 如果想关闭开机自启动:

    systemctl disabel mysqld.service
    
  • 我们可以通过下面指令查看 MySQL 服务是否启动:

    netstat -tunlp | grep mysql
    

    image-20221101142521129

    可以看到,MySQL 服务已经启动了,占用的端口号是经典的 3306 。

  • 到此,MySQL Linux 系统下的安装就完成了。


3. MySQL首次登录


3.1 首次登录

  • 把上面提到的生成的密码 B.kKtpw3*Lb: 作为登录密码:

    mysql -uroot -p
    

    image-20221101135037672

    这样就登录成功了。


3.2 修改初始密码

  • 首次登录后,是没有办法正常使用的。MySQL 会强制你修改初始密码。

    image-20221101135156161

  • 修改密码:

    alter user 'root'@'localhost' identified by 'xsh981104';
    

    image-20221101135415446

  • 这样就修改成功了。然后退出 MySQL :

    quit
    
  • 再次登录:

    mysql -uroot -p
    

    输入新密码,就能登录成功:

    image-20221101135610410

  • 此时,MySQL 就能正常使用了:

    # 查询数据库
    show databases;
    

    image-20221101135704581

  • 由于 MySQL 8.0 默认的字符集就是 UTF-8 ,因此不需要像 MySQL 5.7 那样修改字符集了。


4. SQLyog远程连接

  • 我们可以在 Windows 电脑上,使用 SQLyog 图形化软件远程连接服务器上的 MySQL 。

4.1 防火墙操作

  • 先来查看服务器的防火墙状态:

    systemctl status firewall
    

    image-20221031195058859

    说明防火墙已经打开,外界无法访问。

  • 但是,为了保证系统安全,服务器的防火墙不建议关闭。在实际生产环境中,一般是开启防火墙,只对外开放特定的端口。

  • 我们只需要把 MySQL 所用的 3306 端口对外开放,在保证系统安全的同时,又能让用户正常访问服务器:

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    

    image-20221101141218505

    然后,还必须输入下面的命令才能立即生效:

    firewall-cmd --reload
    

    image-20221101141308404

  • 我们还可以使用下面的命令来查看 Linux 系统对外开放了哪些端口:

    firewall-cmd --zone=public --list-ports
    

    image-20221101141347662

  • 至此,Linux 作为 MySQL 服务器的防火墙配置就设置好了。


4.2 开启远程访问权限

  • 默认情况下,服务器上的 MySQL 是不允许 root 用户远程连接的。我们要修改这个默认设置。

  • 进入服务器的 MySQL :

    mysql -uroot -p
    

    image-20221101135037672

  • 查看有什么数据库:

    show databases;
    

    image-20221101155206452

  • 使用数据库 mysql

    use mysql;
    

    image-20221101155312725

  • 查询数据表 userhostuser 字段信息:

    select host, user from user;
    

    image-20221101155525927

  • 上面第 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';
    

    image-20221101161018321

  • 再次查询:

    select host, user from user;
    

    image-20221101161114168

    该表已经成功修改了。

  • 最后必须刷新,让权限生效:

    flush privileges;
    

    image-20221101161225579


4.3 修改加密方式

  • 因为 MySQL 8.0 的登录密码是使用 SHA2 算法加密的,如果直接远程登录会出现下面的问题:

    image-20221101161426278

  • 因此我们要在服务器上,mysql -uroot -p 登录 MySQL ,在 MySQL 中修执行以下语句:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的MySQL密码';
    

    image-20221101164907026


4.4 连接过程

  • 点击 ”新建“ 来新建连接:

    image-20221101140241828

  • 连接名称为远程服务器的 IP 地址:

    image-20221101140342852

  • 填写好 ”主机地址“ 和密码,点击 ”SSH“ :

    image-20221101144629524

  • 输入远程服务器主机的地址、用户名和开机登录密码:

    image-20221101145029364

  • 然后回到 ”MySQL“ ,输入 MySQL 的用户名和密码,点击 ”测试连接“ :

    image-20221101140524337

  • 如果出现下面的提示,则连接远程服务器成功:

    image-20221101162200033

  • 点击 ”连接“ 即可进入 SQLyog 管理与操作远端服务器上的 MySQL :

    image-20221101162251954

  • 成功远程登录:

    image-20221101162326384

  • 至此,你就可以在 Windows 电脑上愉快地操控远端服务器上的

Logo

更多推荐