Linux环境下MySQL的安装与使用与Navicat

一、安装前的准备工作

在安装MySQL前,需要完成服务器基础环境配置,避免后续安装和使用出现网络、权限问题。

1. 关闭防火墙

CentOS 7默认启用firewalld防火墙,测试环境下可直接关闭,减少端口访问限制:

复制代码
# 停止防火墙服务
systemctl stop firewalld.service
# 禁止防火墙开机自启
systemctl disable firewalld.service
# 验证防火墙状态(显示inactive则为关闭)
systemctl status firewalld.service

2. 配置静态IP与映射

(1)添加映射
复制代码
# 修改电脑"C:\Windows\System32\drivers\etc\hosts"文件
# 最后一行内容  添加主机映射
192.168.111.100 master   #(每个人主机地址不同)
(2)配置静态IP

编辑网卡配置文件,替换为自身网络段的参数:

复制代码
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33

修改以下核心参数(示例为[192.168.111.100]按需调整):

复制代码
TYPE=Ethernet
BOOTPROTO=static  # 静态IP模式
ONBOOT=yes        # 开机自启网卡
IPADDR=192.168.111.100  # 本机IP
NETMASK=255.255.255.0   # 子网掩码
GATEWAY=192.168.111.2   # 网关
DNS1=192.168.111.2      # DNS服务器

3. 配置阿里YUM源(优化下载速度)

CentOS默认源下载速度慢,替换为阿里源:

复制代码
# 备份原有源文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里CentOS 7源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 移除无法访问的阿里云ECS专属源
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 重建yum缓存
yum makecache

二、配置第三方库

1. 换源,备份原有的源配置文件

复制代码
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.从阿里官方网站下载对应系统版本的源配置文件

复制代码
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

3.由于我们是非ECS用户,所以源配置文件中包含aliyuncs.com地址访问不了,故对其进行移除

复制代码
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

4.重新构建本地缓存

复制代码
yum makecache

三、安装MySQL5.7

1.下载yum Repository

复制代码
wget -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

2.安装yum Repository

复制代码
yum -y install mysql57-community-release-el7-10.noarch.rpm

3.使用yum安装mysql5.7

复制代码
yum -y --nogpgcheck install mysql-community-server

4.卸载yum Repository

复制代码
# 安装了yum Repository后,每次执行yum操作都会更新一遍,会导致运行的慢,用完之后删了
yum -y remove mysql57-community-release-el7-10.noarch

四、启动并配置MySQL服务

1.启动服务并设置开机自启

复制代码
# 查看服务状态
systemctl status mysqld
# 启动服务
systemctl start mysqld
# 开机自启
systemctl enable mysqld

2.获取临时密码

MySQL 5.7安装后会生成临时密码,存储在日志文件中:

复制代码
grep "password" /var/log/mysqld.log

3.登录并修改密码

复制代码
# XXX为复制的密码,不要手敲临时密码,使用复制的单行的密码
mysql -uroot -pXXX

4.关闭密码复杂验证

复制代码
set global validate_password_policy=0;
set global validate_password_length=1;

5.设置登录密码

复制代码
alter user user() identified by "123456";

6.开放远程登录

默认root仅允许本地登录,如需远程连接(如Navicat),执行以下命令:

复制代码
# 切换至mysql数据库
use mysql;
# 修改权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 刷新权限
flush privileges;
# 退出
exit;

7.修改MySQL编码为utf8mb4

避免中文乱码,退出mysql,编辑/etc/my.cnf配置文件,添加以下内容:

复制代码
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

重启MySQL服务生效:

复制代码
systemctl restart mysqld

8.查看数据库

复制代码
show databases;

运行结果:

五、MySQL基础使用(建表、增删改查、导入导出)

1. 创建数据表

复制代码
-- 学生表
CREATE TABLE `students` (
  `stu_id` bigint(10) DEFAULT NULL COMMENT '学生学号',
  `stu_name` varchar(255) DEFAULT NULL COMMENT '学生姓名',
  `gender` varchar(255) DEFAULT NULL COMMENT '学生性别',
  `age` int(10) DEFAULT NULL COMMENT '学生年龄',
  `major` varchar(255) DEFAULT NULL COMMENT '学生专业',
  `clazz` varchar(255) DEFAULT NULL COMMENT '学生班级',
  `year` bigint(20) DEFAULT NULL COMMENT '入学年份'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 插入数据

(1)单条数据插入
复制代码
insert into students values(20250101,'张三','男',20,'计算机科学与技术','计科2501',2025);
(2)批量数据插入
复制代码
insert into students(stu_id,stu_name,gender,age,major,clazz,year) values
(20250101,'张三','男',20,'计算机科学与技术','计科2501',2025),
(20250102,'李四','女',20,'计算机科学与技术','计科2501',2025),
(20250103,'王五','男',19,'计算机科学与技术','计科2501',2025),
(20250201,'赵六','女',20,'软件工程','软工2502',2025);
(3)从本地文件导入数据

适合大批量数据导入,示例导入students.txt(字段以逗号分隔):

复制代码
# Linux系统
load data local infile '/root/data/students.txt' into table students fields terminated by ',';

3. 数据查询

(1)基础查询
复制代码
-- 查询所有学生信息
select * from students;
-- 查询年龄20岁的学生姓名和年龄
select stu_name, age from students where age = 20;
-- 模糊查询计算机相关专业学生
select * from students where major LIKE '%计算机科学%';
(2)排序与分组查询
复制代码
-- 按学号倒序查询20岁学生
SELECT stu_id, stu_name FROM students WHERE age = 20 ORDER BY stu_id DESC;
-- 查询各专业学生最大年龄
SELECT major,MAX(age) as max_age FROM students GROUP BY major;
(3)多表联查(内连接/外连接)
复制代码
-- 内连接:查询学生+成绩+科目信息
SELECT s.*, sc.subject_id, su.subject_name
FROM students s
JOIN scores sc ON s.stu_id = sc.stu_id
JOIN subjects su ON sc.subject_id = su.subject_id;

-- 右连接:查询所有成绩记录(含无对应学生的成绩)
SELECT * FROM students s RIGHT JOIN scores sc ON s.stu_id = sc.stu_id;

4. 数据导出(备份)

使用mysqldump工具备份数据表,示例备份students表:

复制代码
# 基础备份(不建议明文写密码)
mysqldump -uroot -p123456 stu students > /root/data/students.sql

# 配置别名实现每日自动备份(添加到~/.bashrc)
alias db_backup='mysqldump -uroot -p --single-transaction stu students | gzip > /root/data/mydb_$(date +%Y%m%d).sql.gz'

执行source ~/.bashrc生效后,直接输入db_backup即可生成带日期的压缩备份文件。

六、Navicat

1.新建数据库

打开后右击,点击新建连接,选择mysql

连接名可更换,主机选择你添加的映射名或地址

连接后右击选择新建数据库,设置好数据库名即可

2.新建表与导入文件

右击表,选择新建表

点击添加字段,即可设计表,注意:设计完后要点击保存

保存后右击选择导入向导,即可导入文件数据

这里只需要选择制表符,其他默认

字段名行:如果没有列名就改为0

第一个数据行:从此行开始读取数据,若没有说明性文字,序列从1开始

目标字段要对应选择之前设计好的字段

导入模式选择追加,设置了主键选追加或更新

最后点击开始,显示没有错误后,刷新就可以看到导入结果

3.导出表

右击表,选择导出模式,然后直接跳到最后一步,点击开始即可

4.查询

点击新建查询,可以通过语句查找数据。注意:要框选查询语句,再点击运行

相关推荐
Aloudata2 小时前
NoETL 指标平台如何保障亿级明细查询的秒级响应?——Aloudata CAN 性能压测深度解析
数据库·数据分析·自动化·指标平台
maoku662 小时前
从关键词到语义:向量数据库如何让AI真正理解你的需求
数据库·人工智能
寻道码路2 小时前
【MCP探索实践】Google GenAI Toolbox:Google开源的企业级AI数据库中间件、5分钟搞定LLM-SQL安全互联
数据库·人工智能·sql·开源·aigc
数据知道2 小时前
PostgreSQL 核心原理:一文掌握 WAL 缓冲区与刷盘策略(性能与数据安全的权衡)
数据库·postgresql
三个人工作室2 小时前
mysql允许所有ip地址访问,mysql允许该用户访问自己的数据库【伸手党福利】
数据库·tcp/ip·mysql
小小逐月者2 小时前
SQLModel 开发笔记:Python SQL 数据库操作的「简化神器」
数据库·笔记·python
QQ828929QQ2 小时前
MySQL Explain 分析 SQL 执行计划
数据库·sql·mysql
我是小超人-雨石花2 小时前
postgresql + postgis安装
数据库·postgresql·postgis·空间数据库
码农很忙2 小时前
SCALE发布《2025年12月大模型SQL能力排行榜》:格局与趋势洞察
数据库·业界资讯