MySQL数据库认知与安装

一、MySQL数据库简介

MySQL是一款开源的关系型数据库管理系统(RDBMS),由Oracle公司维护,广泛应用于中小型网站、企业级应用的数据存储场景。其核心特点包括:

  • 开源免费:社区版可免费使用,商业版提供更完善的技术支持。

  • 跨平台:支持Linux、Windows、Unix等多种操作系统,本文重点讲解Linux系统下的安装与配置。

  • 性能优异:对并发访问支持良好,轻量级且资源占用低,适合高并发场景。

  • 易用性强:SQL语法标准,配置简单,拥有丰富的工具(如mysql命令行、Navicat)支持。

Linux系统中,MySQL的常见版本分为社区版(MySQL Community Server)和商业版(MySQL Enterprise Edition),日常学习、开发优先选择社区版。

二、Linux系统MySQL安装前提

2.1 系统环境要求

  • 系统版本:CentOS 7/8、Ubuntu 18.04/20.04(本文以CentOS 7为例,Ubuntu步骤略有差异)。

  • 硬件要求:最低1GB内存、10GB磁盘空间(实际生产环境建议2GB以上内存)。

  • 网络要求:能访问外网(用于下载MySQL安装包或依赖),关闭防火墙或开放MySQL默认端口3306。

2.2 前置准备操作

安装前需清理系统中已有的MySQL或MariaDB(CentOS默认自带MariaDB,与MySQL冲突),步骤如下:

  1. 查看已安装的相关软件:rpm -qa | grep mysqlrpm -qa | grep mariadb

  2. 卸载已安装的软件(以MariaDB为例):yum remove mariadb-server mariadb-libs -y(Ubuntu用apt remove mariadb-server)。

  3. 删除残留文件:rm -rf /var/lib/mysql/rm -rf /etc/my.cnf

  4. 安装依赖包:yum install -y wget gcc gcc-c++ perl(Ubuntu用apt install -y wget gcc perl)。

三、Linux系统MySQL安装步骤

MySQL安装方式主要有3种:rpm包安装、源码编译安装、yum仓库安装。其中rpm方式步骤简单,适合新手,本文重点讲解此方式。

3.1 下载MySQL rpm安装包

  1. 进入MySQL官方下载地址(或使用wget命令直接下载): 官方地址:https://dev.mysql.com/downloads/mysql/,选择对应Linux版本(CentOS 7选择el7版本)。

  2. 使用wget命令下载(推荐,需提前安装wget): wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar

  3. 解压安装包:tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar,解压后得到多个rpm文件。

3.2 安装MySQL相关rpm包

解压后,按以下顺序安装(顺序错误会导致依赖报错):

  1. 安装客户端依赖:rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm

  2. 安装客户端libs:rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm

  3. 安装客户端:rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm

  4. 安装服务器端:rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm

若安装过程中提示"依赖检测失败",可在rpm命令后加--nodeps --force强制安装(不推荐,优先解决依赖问题)。

3.3 启动MySQL服务并设置开机自启

  1. 启动MySQL服务:systemctl start mysqld

  2. 查看服务状态:systemctl status mysqld,出现"active (running)"即为启动成功。

  3. 设置开机自启(避免重启系统后服务失效):systemctl enable mysqld

3.4 初始化MySQL

  1. MySQL 8.0安装后会自动生成初始密码,存储在日志文件中,查看初始密码: grep 'temporary password' /var/log/mysqld.log

  2. 复制日志中的初始密码(格式类似:root@localhost: xxxxxxxx,冒号后为密码),后续登录需使用。

3.5 登录MySQL并修改初始密码

  1. 登录MySQL命令行:mysql -u root -p,输入上一步获取的初始密码,回车登录。

  2. 修改初始密码(MySQL 8.0密码有复杂度要求:至少8位,包含大小写、数字、特殊符号): ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123';(替换NewPassword@123为自己的密码)

  3. 刷新权限(使密码修改生效):FLUSH PRIVILEGES;

3.6 配置MySQL远程访问

默认情况下,MySQL只允许本地(localhost)访问,若需远程连接(如用Navicat),需配置远程权限:

  1. 登录MySQL后,执行以下命令,允许root用户从任意IP远程访问(生产环境建议限制具体IP): CREATE USER 'root'@'%' IDENTIFIED BY 'NewPassword@123';(密码与上一步一致)

  2. 授予远程访问权限:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

  3. 刷新权限:FLUSH PRIVILEGES;

  4. 开放Linux防火墙3306端口: firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload

四、MySQL基础操作

4.1 登录与退出

  • 登录:mysql -u 用户名 -p(如mysql -u root -p),输入密码后登录。

  • 退出:exit;quit;

4.2 数据库基础操作

  • 查看所有数据库:show databases;

  • 创建数据库:create database 数据库名;(如create database test_db;

  • 使用数据库:use 数据库名;(如use test_db;

  • 删除数据库:drop database 数据库名;(谨慎操作,删除后无法恢复)

4.3 表基础操作(需先使用数据库)

  • 查看当前数据库所有表:show tables;

  • 创建表: create table 表名( 字段名1 数据类型, 字段名2 数据类型, primary key(字段名1) ); 示例:create table student(id int, name varchar(20), primary key(id));

  • 查看表结构:desc 表名;(如desc student;

  • 删除表:drop table 表名;(谨慎操作)

五、常见问题及解决方法

  • 问题1:启动mysqld服务失败,提示"Job for mysqld.service failed because the control process exited with error code." 解决:查看日志排查原因,cat /var/log/mysqld.log,常见原因是残留的MySQL文件未删除,重新执行前置准备中的删除残留文件步骤,再重启服务。

  • 问题2:登录MySQL时提示"Access denied for user 'root'@'localhost' (using password: YES)" 解决:密码错误,重新获取初始密码;若忘记密码,需重置密码(参考MySQL重置密码教程)。

  • 问题3:远程连接MySQL失败 解决:1. 检查MySQL远程权限是否配置正确;2. 检查Linux防火墙3306端口是否开放;3. 确认远程设备与Linux服务器网络互通。

  • 问题4:MySQL密码复杂度不满足要求,修改密码失败 解决:密码需包含大小写字母、数字、特殊符号,长度至少8位,按要求重新设置密码。

六、补充说明

  • MySQL配置文件路径:/etc/my.cnf,可修改端口、字符集、日志路径等配置(修改后需重启mysqld服务生效)。

  • MySQL日志路径:/var/log/mysqld.log,出现问题时优先查看日志排查。

  • Ubuntu系统安装:步骤与CentOS类似,将yum命令替换为apt,下载对应Ubuntu版本的rpm包(或deb包)。

  • 卸载MySQL:执行rpm -e --nodeps 包名(先查看已安装包名),再删除残留文件。

相关推荐
character08252 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
L_09072 小时前
【Linux】进程控制
linux·运维·服务器
月临水2 小时前
用rustdesk+云服务器实现远程控制
运维·服务器
NineData2 小时前
NineData 新增支持 MySQL 到 openGauss PostgreSQL 兼容版数据复制链路
数据库·mysql·程序员
晨曦_子画2 小时前
C# sql语句含有 like %name%如何提高查询效率
数据库·sql·c#
云贝教育-郑老师2 小时前
【5分钟学会部署OpenTenBase V5.0 for CentOS 7.8】
数据库·oracle
牛奶咖啡132 小时前
企鹅龙+再生龙服务器版实现自动化备份与还原系统实践
运维·自动化·企鹅龙·再生龙服务器版·系统批量自动化备份·系统批量自动化还原
阿贵---2 小时前
定时任务专家:Python Schedule库使用指南
jvm·数据库·python
TsukasaNZ2 小时前
如何为开源Python项目做贡献?
jvm·数据库·python