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.查询

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

相关推荐
林开落L11 小时前
解决云服务器内存不足:2 分钟搞定 Ubuntu swap 交换区配置(新手友好版)
运维·服务器·ubuntu·swap交换区
初恋叫萱萱11 小时前
深入解析 Rust + LLM 开发:手把手教你写一个 AI 运维助手
运维·人工智能·rust
加农炮手Jinx11 小时前
Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)
运维·flutter·华为·自动化·harmonyos·devops
我真的想 啸11 小时前
在 Ubuntu 24.04 系统上安装并使用 Codex CLI
linux·ubuntu·arcgis
Anastasiozzzz14 小时前
MySQL深分页问题与优化思路
数据库·mysql
伯明翰java14 小时前
数据库的操作
数据库
雨大王51214 小时前
汽车生产智能计划助手如何提升排产效率并降低库存积压?
大数据·运维
嵌入小生00714 小时前
线程(2)/ 线程属性 /相关函数接口--- 嵌入式(Linux)
linux·嵌入式·线程·软件编程·僵尸线程·马年开工第一学·线程属性
以太浮标15 小时前
华为eNSP综合实验之- 3a认证配置案例及解析(AAA认证)
运维·tcp/ip·网络安全·华为·信息与通信
No8g攻城狮15 小时前
【Linux】Linux nano 编辑器全攻略:从入门到精通
linux·运维·编辑器·nano