Linux中安装MySQL

1. 卸载系统自带的mariadb

我这里使用的是Centos7, 所以系统会自带Mariadb,需要先卸载掉,当然后面在安装mysql的过程中也会有提示

  • 查询已安装的 Mariadb 安装包:

    rpm -qa | grep mariadb
    

  • 将所有的都卸载

    yum -y remove xxx
    

    我这里只有一个,如果有多个需要全部删除

2. 下载mysql安装包 (https://www.mysql.com/downloads/)

选择开源免费的社区版进行下载:

选择操作系统:

这里没有centos版本,选择红帽就好

我这里是Centos 7.9, x86架构:

下载第一个rpm捆绑包,

捆绑包中会包含以下内容,就不用自己一个一个下载了

  • mysql-community-server数据库服务器和相关工具

  • mysql-community-clientMySQL客户端应用程序和工具

  • mysql-community-libsMySQL数据库客户端应用程序的共享库

  • mysql-community-common服务器和客户端库的通用文件

  • mysql-community-libs-compat以前的MySQL安装的共享兼容性库

3.正式进行安装

  • 在 /opt 目录下新建mysql文件夹, 将下载的安装包推送到该目录下

  • 在 /opt/mysql目录下解压安装包:
gzip mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar  # 会将.tar文件变成 .tar.gz文件
tar -zxvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar.gz  # 解压

  • 前置检查

    由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以需要给 /tmp 目录较大的权限。

    chmod -R 777 /tmp
    

    检查依赖:

    rpm -qa|grep libaio
    

    如果没有的话需要执行 yum install -y libaio-devel.x86_64 进行安装

    rpm -qa|grep net-tools
    

    如果没有的话需要执行 yum install net-tools 进行安装

  • 开始安装

    依次执行以下命令,注意一定要按顺序,因为会有依赖关系

    rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
    rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm
    

4.验证mysql是否安装成功:

mysql --version  //查看版本
rpm -qa | grep -i mysql

5.服务的初始化

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

mysqld --initialize --user=mysql

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

查看密码:

cat /var/log/mysqld.log

6.启动mysql服务

systemctl start mysqld.service  # 启动mysql服务
systemctl status mysqld.service  # 查看mysql服务的状态

默认情况下mysql服务是开机自启的

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

systemctl enable mysqld.service

7.登录mysql

用前面我们查看的密码进行登录

mysql -uroot -p

输入密码

8.重置密码

执行了一个命令提示我们要修改密码(因为初始化密码默认是过期的,所以查看数据库会报错)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';

重新登录一下mysql即可

9.Windows远程连接

这里使用的windows客户端软件是SQLYog

测试连接失败, 这是由于Mysql配置了不支持远程连接

  • 到远程Linux主机中查看3306端口是否开放

  • 到远程Linux主机中设置防火墙 (Linux中防火墙的基本使用:https://www.cnblogs.com/junlin623/p/17062973.html) 放行3306端口的数据

    firewall-cmd --zone=public --add-port=3306/tcp --permanent  #放行3306端口
    systemctl restart firewalld.service #重启防火墙
    firewall-cmd --reload  #重新载入配置
    

  • Linux中不允许远程主机通过root用户登录问题

可以看到root用户对应的主机是localhost也就是自身主机

Host列指定了允许用户登录所使用的IP,比如User=root Host=192.168.1.1, 意思就是说root用户只能通过192.168.1.1的客户端去访问; User=root Host=localhost,表示只能通过本机客户端去访问。而 %是个通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果 Host=% ,表示所有IP都有连接权限。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置。

我们需要将mysql数据库user表中的root用户这个记录对应的主机进行修改

update user set host='%' where user='root';

修改成功:

刷新一下权限:

flush privileges;

此时出现了新的报错:

这个问题只会在mysql 8.0版本中出现, 原因是MySQL8.0对密码进行了加密

远程Linux主机下登录数据库,执行:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';   --这里的密码随便设置

sqlyog中重新连接成功:

posted @ 2023-01-20 19:26  junlin623  阅读(6960)  评论(2编辑  收藏  举报