• Linux安装MySQL


    Linux安装MySQL

    这里以安装MySQL8.0.34为例,系统环境为CentOS 7 64位。SSH远程连接使用的是FinalShell。

    MySQL官网:mysql.com

    image-20230815200248515

    image-20230815200314642

    image-20230815200341078

    image-20230815200954538

    image-20230815201036541

    下载地址直达:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar

    下载完成解压后,可以看到许多.rpm文件,将其中打框的传入至虚拟机:

    image-20230816094230242

    检查CentOS 7下MySQL依赖

    检查/tmp临时目录权限

    因为在mysql安装过程中,会通过mysql用户在/tmp_db文件,所以需要给/tmp较大的权限:

    chmod -R 777 /tmp
    
    • 1

    image-20230815225814547

    检查依赖

    libaio

    rpm -qa|grep libaio
    
    • 1

    如果存在依赖,则如下图:

    image-20230815230024864

    如果没有,则执行以下命令进行安装:

    yum install -y libaio-0.3.109-13.el7.x86_64
    
    • 1

    net-tools

    rpm -qa|grep net-tools
    
    • 1

    如果存在依赖,则如下图:

    image-20230815231300115

    如果没有,则执行以下命令进行安装

    yum install -y net-tools-2.0-0.25.20131004git.el7.x86_64
    
    • 1

    注意:如果Linux系统选择的是带图形化界面,则这些都是安装好的,最小安装方式则需要进行手动安装一下。

    安装过程

    将安装程序拷贝到/mysql目录下

    安装程序即上面拷贝到虚拟机的六个.rpm文件,如果上面已经考过了,则直接用cd命令打开文件所在目录即可。

    在mysql的安装文件目录下执行(必须按照顺序执行):

    rpm -ivh mysql-community-common-8.0.34-1.el7.x86_64.rpm
    
    rpm -ivh mysql-community-client-plugins-8.0.34-1.el7.x86_64.rpm
    
    rpm -ivh mysql-community-libs-8.0.34-1.el7.x86_64.rpm
    
    rpm -ivh mysql-community-client-8.0.34-1.el7.x86_64.rpm
    
    rpm -ivh mysql-community-icu-data-files-8.0.34-1.el7.x86_64.rpm 
    
    rpm -ivh mysql-community-server
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:在安装第三个的时候,会报下面的错误:

    image-20230816093213742

    这是因为mysql被oracle收购之后,mysql团队担心oracle公司会将mysql闭源,所以mysql核心团队单独开发了一款开源的,就叫mariadb。只需要执行下面的命令清除之前安装的依赖即可:

    yum remove -y mysql-libs
    
    • 1

    清除之后重新安装第三步,继续后续的安装即可。

    查看MySQL版本

    类似于java -version查看java版本的命令,执行下面的命令,如果安装成功则会显示如下图:

    mysql --version
    # 或者
    mysqladmin --version
    
    • 1
    • 2
    • 3

    image-20230816094652922

    也可以执行下面的命令,查看是否有刚才安装的六个程序判断是否安装成功。

    rpm -qa|grep -i mysql
    
    • 1

    image-20230816094849532

    服务初始化

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

    mysqld --initialize --user=mysql
    
    • 1

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

    执行命令查看日志中的临时密码:

    cat /var/log/mysqld.log
    
    • 1

    image-20230816095449053

    启动MySQL

    这时先不要着急登录mysql,还需要检查一下mysql服务是否启动:

    systemctl status mysqld
    
    • 1

    image-20230816095554734

    发现mysql只是安装完成,并没有启动,执行命令启动mysql:

    systemctl start mysqld
    
    • 1

    再次查看mysql服务状态,已经启动(active):

    image-20230816095740320

    用命令查看mysql是否自启动:

    systemctl list-unit-files|grep mysqld.service
    
    • 1

    发现也已经开启自启动:

    image-20230816100044913

    设置mysql自启动,以便于以后启动虚拟机后不再需要手动打开mysql

    systemctl enable mysqld.service
    
    • 1

    如果不希望进行自启动,也可以运行以下命令进行配置:

    systemctl disable mysqld.service
    
    • 1

    登录MySQL

    此时已经全部就绪,可以开始进行登录:

    mysql -uroot -p临时密码
    
    • 1

    注意:-p与密码之间不要有空格,否则会登录失败,因为mysql会将空格也当作密码的一部分。

    image-20230816100637678

    登录成功,先别着急操作数据库,此时还需要修改密码(即使操作数据库也没用,mysql会强制让你修改密码)

    image-20230816100843820

    执行下面的命令进行重置密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    
    • 1

    修改完成后,退出重新登陆一下mysql

    # 退出登录
    exit
    
    mysql -uroot -p新密码
    
    • 1
    • 2
    • 3
    • 4

    重新登录之后,再次查看数据库:

    show databases;
    
    • 1

    可以看到,此时已经可以查看数据库了。

    image-20230816101338595

    远程连接

    这里使用的mysql远程连接工具是SQLyog。

    首先先关闭虚拟机的防火墙

    systemctl stop firewalld
    
    # 关闭防火墙开机自启动
    systemctl disable firewalld
    
    • 1
    • 2
    • 3
    • 4

    注:生产环境下不要轻易关闭服务器的防火墙。而是指定开放访问端口。

    # 开启防火墙
    systemctl start firewalld
    
    # 开启自启动
    systemctl enable firewalld
    
    # 开放3306端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    --permanent表示永久开放此端口。

    打开SQLyog,创建新的连接,输入虚拟机ip地址,mysql密码,进行测试连接:

    image-20230816110423677

    image-20230816101907350

    此时并没有那么顺利,因为MySQL为了保证数据安全,默认是禁止了远程登录的。所以会报出错误号码1130 Host '192.168.xxx.xxx' is not allowed to connect to this MySQL server错误

    此时需要执行一些命令:

    登录mysql

    mysql -uroot -p新密码
    
    • 1

    查看mysql数据库

    # 使用mysql数据库
    USE mysql;
    
    SELECT host FROM user where user = 'root';
    
    • 1
    • 2
    • 3
    • 4

    image-20230816102342353

    此时的注解访问地址为localhost,所以无法进行远程连接,更改一下即可:

    UPDATE user set host = "%" where user = 'root';
    
    • 1

    这里的%代表所有ip都可以进行访问。

    刷新mysql配置(或者重启mysql服务)

    # 刷新
    FLUSH PRIVILEGES;
    
    # 退出mysql
    exit
    # 重启mysql服务
    systemctl restart mysqld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    此时再次用SQLyog进行测试连接时,发现还有一个报错,~已经开始烦躁了

    image-20230816103312365

    报错的原因是因为mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

    所以此时输入命令修改加密规则:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
    
    # 刷新
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4

    此时可以查看user表中相关信息,是否修改成功:

    # 使用mysql数据库
    USE mysql
    
    SELECT user,host,plugin FROM user WHERE user='root';
    
    • 1
    • 2
    • 3
    • 4

    image-20230816104140829

    说明此时已经修改成功了。

    最后,再次使用SQLyog测试连接一下数据库。终于,连接成功!

    image-20230816104613385

    值得注意的是,这里只是测试安装,所以开放所有ip访问没有任何关系。但在实际开发生产中,开放所以ip访问可能会导致数据被泄露,所以会开放指定端口访问或者只允许本地(localhost)访问。

  • 相关阅读:
    虚拟知识图谱系统Ontop使用全流程
    C++初级----list(STL)
    iOS开发 Xcode快捷键
    CSDN每日一练 |『买苹果』『最长回文串』『查找整数』2023-10-20
    跨模态对齐 20220728
    图像处理之图像质量评价指标RMSE(均方根误差)
    Ubuntu安装docker及docker-compose
    【华为免费实战课】基于ENSP实现企业园区网组网项目实战
    DAY6-力扣刷题
    HCIP实验1-2:OSPF多区域
  • 原文地址:https://blog.csdn.net/qq_73574147/article/details/134016882