一、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冲突),步骤如下:
-
查看已安装的相关软件:
rpm -qa | grep mysql、rpm -qa | grep mariadb。 -
卸载已安装的软件(以MariaDB为例):
yum remove mariadb-server mariadb-libs -y(Ubuntu用apt remove mariadb-server)。 -
删除残留文件:
rm -rf /var/lib/mysql/、rm -rf /etc/my.cnf。 -
安装依赖包:
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安装包
-
进入MySQL官方下载地址(或使用wget命令直接下载): 官方地址:https://dev.mysql.com/downloads/mysql/,选择对应Linux版本(CentOS 7选择el7版本)。
-
使用wget命令下载(推荐,需提前安装wget):
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar -
解压安装包:
tar -xvf mysql-8.0.36-1.el7.x86_64.rpm-bundle.tar,解压后得到多个rpm文件。
3.2 安装MySQL相关rpm包
解压后,按以下顺序安装(顺序错误会导致依赖报错):
-
安装客户端依赖:
rpm -ivh mysql-community-common-8.0.36-1.el7.x86_64.rpm -
安装客户端libs:
rpm -ivh mysql-community-libs-8.0.36-1.el7.x86_64.rpm -
安装客户端:
rpm -ivh mysql-community-client-8.0.36-1.el7.x86_64.rpm -
安装服务器端:
rpm -ivh mysql-community-server-8.0.36-1.el7.x86_64.rpm
若安装过程中提示"依赖检测失败",可在rpm命令后加--nodeps --force强制安装(不推荐,优先解决依赖问题)。
3.3 启动MySQL服务并设置开机自启
-
启动MySQL服务:
systemctl start mysqld -
查看服务状态:
systemctl status mysqld,出现"active (running)"即为启动成功。 -
设置开机自启(避免重启系统后服务失效):
systemctl enable mysqld
3.4 初始化MySQL
-
MySQL 8.0安装后会自动生成初始密码,存储在日志文件中,查看初始密码:
grep 'temporary password' /var/log/mysqld.log -
复制日志中的初始密码(格式类似:
root@localhost: xxxxxxxx,冒号后为密码),后续登录需使用。
3.5 登录MySQL并修改初始密码
-
登录MySQL命令行:
mysql -u root -p,输入上一步获取的初始密码,回车登录。 -
修改初始密码(MySQL 8.0密码有复杂度要求:至少8位,包含大小写、数字、特殊符号):
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123';(替换NewPassword@123为自己的密码) -
刷新权限(使密码修改生效):
FLUSH PRIVILEGES;
3.6 配置MySQL远程访问
默认情况下,MySQL只允许本地(localhost)访问,若需远程连接(如用Navicat),需配置远程权限:
-
登录MySQL后,执行以下命令,允许root用户从任意IP远程访问(生产环境建议限制具体IP):
CREATE USER 'root'@'%' IDENTIFIED BY 'NewPassword@123';(密码与上一步一致) -
授予远程访问权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; -
刷新权限:
FLUSH PRIVILEGES; -
开放Linux防火墙3306端口:
firewall-cmd --permanent --add-port=3306/tcpfirewall-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 包名(先查看已安装包名),再删除残留文件。