运维 | Linux 系统中 MySQL 的安装与使用记录

Linux 系统中 MySQL 的安装与使用记录

介绍

基本信息

在 Linux 系统中,MySQL 是一种常用的关系型数据库管理系统。

MySQL 默认安装位置:/var/lib/mysql

检查默认安装位置:

which mysql

该命令将显示 MySQL 二进制可执行文件的路径。在大多数情况下,它将显示 /usr/bin/mysql,这意味着 MySQL 被正确安装并且可以在命令行中使用。

mysql_config --variable=pkglibdir

该命令将显示 MySQL 的库文件目录,通常是 /usr/lib/mysql

数据库安装完成后,自带了以下四个数据库,具体作用如下:

  • mysql - 存储 MySQL 服务器正常运行所需要的各种信息(时区、主从、用户、权限等)
  • information_schema - 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类型及访问权限等
  • performance_schema - 为 MySQL 服务器运行时状态提供了一个底层监控功能,主要用于收集数据库服务器性能参数
  • sys - 包含了一系列方便 DBA 和开发人员你用 performance_schema 性能数据库进行性能调优和诊断的视图

常用工具

mysql

这里的 mysql 不是指 mysqld 服务,而是指 mysql 的客户端工具

  • 基本用法
语法 :mysql [options] [database]
选项 :-u, --user=name           # 指定用户名-p, --password[=name]     # 指定密码-h, --host=name           # 指定服务器 IP 或域名(不写则默认本地 ip)-P, --port=port           # 指定连接端口(不写则默认端口 3306)-e, --execute=name        # 执行 SQL 语句并退出

-e 选项可以在 MySQL 客户端执行 SQL 语句,而不用连接到 MySQL 数据库再执行,对于一些批处理脚本,这种方式尤其方便。

例如:

mysql -uroot -p1234 itcast -e "select * from stu"
mysqldump

mysqldump 客户端工具用来备份数据库或在不同数据库之间进行数据迁移。备份内容包含创建表及插入表的 SQL 语句。

  • 基本用法
语法 :mysqldump [options] db_name [tables]mysqldump [options] --database/-B db1 [db2 db3...]mysqldump [options] --all-databases/-A连接选项 :-u, --user=name               # 指定用户名-p, --password[=name]         # 指定密码-h, --host=name               # 指定服务器ip或域名-P, --port=                   # 指定连接端口输出选项:--add-drop-database           # 在每个数据库创建语句前加上 drop database 语句--add-drop-table              # 在每个表创建语句前加上 drop table 语句 , 默认开启; 不开启 (--skip-add-drop-table)-n, --no-create-db            # 不包含数据库的创建语句-t, --no-create-info          # 不包含数据表的创建语句-d, --no-data                 # 不包含数据-T, --tab=name                # 自动生成两个文件:一个.sql文件,创建表结构的语句;一个.txt文件,数据文件
mysqladmin

mysqladmin 是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。

  • 基本用法
语法:mysqladmin [options] command ...
选项:-u, --user=name             # 指定用户名-p, --password[=name]       # 指定密码-h, --host=name             # 指定服务器 IP 或域名-P, --port=port             # 指定连接端口

示例

# 删除指定的数据库
mysqladmin -uroot –p1234 drop 'test01'# 查看数据库版本信息
mysqladmin -uroot –p1234 version
mysqlbinlog

由于服务器生成的二进制日志文件以二进制格式保存,所以如果想要检查这些文本的文本格式,就会使用到 mysqlbinlog 日志管理工具。

mysqlshow

mysqlshow 客户端对象查找工具,用来很快地查找存在哪些数据库、数据库中的表、表中的列或者索引。

快速使用

前提准备

  • 查看系统版本
cat /etc/redhat-release
  • 检测是否安装过 mysql
rpm -qa | grep mysql
  • 检测是否安装过 mariadb,若存在请卸载(该软件与 MySQL 数据库有冲突,需要手动卸载)
rpm -qa | grep mariadb

卸载

rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

开始安装

  1. 访问 MySQL 官网,找到 MySQL Community Server 并选择对应版本压缩包文件进行下载,上传服务器。也可以使用 wget 命令行下载:
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar

MySQL 版本与 Linux 系统相对应,如:centos7 -> el7centos8 -> el8

  1. 解压缩文件
mkdir /usr/local/mysqltar -xvf /usr/local/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar -C /usr/local/mysqlcd /usr/local/mysql
  1. 使用 rpm 命令行安装
rpm -ivh mysql-community-common-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-client-plugins-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-libs-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-client-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-icu-data-files-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-devel-8.0.31-1.el8.x86_64.rpmrpm -ivh mysql-community-server-8.0.31-1.el8.x86_64.rpm

必须按照顺序执行命令,否则会出现依赖错误的报错

  1. 检测是否安装成功
mysql -V
# or
mysql --version

常用命令

查看服务状态
systemctl status mysqld
开启服务
systemctl start mysqld
停止服务(暂时关闭)
systemctl stop mysqld
重启服务
systemctl restart mysqld
设置开机自启
systemctl enable mysqld
禁止服务(永久关闭)
systemctl disable mysqld

操作指南

获取初始化密码

第一次运行 MySQL 服务时,会进行初始化加载,同时会生成一个 root 用户的初始密码,可以通过查看日志文件 /var/log/mysqld.log 获取到 root 用户的初始密码,后续可手动修改密码

cat /var/log/mysqld.log | grep 'password'

连接数据库

  1. 基本用法
用法:mysql [OPTIONS] [database]参数:-h, - 连接地址-u, - 用户名(若存在)-p, - 密码(若存在)-P, - 端口(默认:3306)
  1. 使用实例
  • 连接默认数据库
mysql -u root -p

密码默认为空(与 MySQL 版本有关),若无法连接可尝试查看初始密码进行连接

  • 连接本地数据库
mysql -h localhost -uroot -p123456
  • 连接指定数据库
mysql -h localhost -uroot -p123456 [database]

修改用户密码

  • 修改初始化密码
alter user 'root'@'localhost' identified by '123456';
  • 修改校验密码策略(可选,一般不需要修改)
# 设置密码长度的最低位数
set global validate_password.length=4;# 设置密码的安全等级,修改密码安全策略为低(只校验密码长度,至少8位)
set global validate_password.policy=LOW;
  • 使用 mysqladmin 工具修改密码
mysqladmin -uroot -p'原密码' password '新密码';
  • 使用 sql 语句更改密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
  • 忘记 root 用户密码使用 UPDATE 直接编辑 user 表
# 进入my.cnf文件
vim /etc/my.cnf # 添加语句,跳过授权表
skip-grant-tables# 重新启动 mysql
systemctl restart mysql# 登入 mysql,此时不需要密码验证
mysql -uroot -p# 设置新密码
update mysql.user set authentication_string=password("新密码")where User="root" and Host="localhost";# 刷新授权
flush privileges;

远程连接

  • 开放端口(3306)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-port
  • 开放远程访问权限
  1. 连接数据库并切换到 mysql 数据库
mysql -u root -puse mysql;
  1. 查看用户访问权限
select host, user, plugin from user;

localhost - 只可以本地访问
% - 允许任意地方访问

  1. 设置用户任意地方可以访问
update user set host='%' where user='root';
  1. 刷新权限
flush privileges;

备份与还原

导入数据(还原)

  1. 进入 mysql
mysql -uroot -p
  1. 创建新的数据库
create database test;
show databases;
  1. 使用目标数据库
use test;
show tables;
  1. 运行指定路径的 SQL 文件
source /root/test.sql;
  1. 检验是否导入成功
show tables; # 查看所有表
desc test_tb; # 查看某张表结构
select * from test_tb; # 查询某张表

导出数据(备份)

mysqldump 是在操作系统命令行下运行的,不是在 MySQL 命令行下运行的。

一般形式:mysqldump -h [IP] -u [用户名] -p [数据库名] > [导出的文件名]

若找不到 mysqldump 命令,可尝试在安装目录 mysql/bin 下运行

  • 导出所有表以及数据(不加 -d)
mysqldump -h localhost -u root -p test> ~/test.sql
  • 导出所有表结构(加 -d)
mysqldump -h localhost -u root -p -d test> ~/test.sql

添加 --add-drop-table 参数:在每个 create 语句前增加一个 drop table

mysqldump -h localhost -u root -p -d  --add-drop-table test> ~/test.sql
  • 导出某张表的表结构不含数据
mysqldump -h localhost -u root -p -d test test_tb> ~/test.sql
  • 导出某张表的表结构和数据(不加 -d)
mysqldump -h localhost -u root -p test test_tb> ~/test.sql
  • 备份多个数据库
mysqldump -h localhost -u root -p --databases test1 test2> ~/test.sql
  • 备份所有的数据库
mysqldump -h localhost -u root -p --all -databases> ~/test.sql
  • 导出为指定格式的数据的外部任意文件类型

一般形式:mysqldump -u root -p -T [目标目录] [dbname] [tablename] [option]

其中 option 与下文参数一样,只需要简单转换下,如:FIELDS TERMINATED BY '字符串' 更改为 --fields-terminated-by=字符

示例

mysqldump -u root -p -T G:\arcgisworkspace\zypdoc\ abc pollution "--fields-terminated-by=," 

不要任何多余的空格,也不用转移字符
-p 后面也不用写密码
注意目标目录是文件夹,文件名是表名,后缀是 .txt 文件

导出文本文件

一般形式:select [列名称] from tablename [where] into outfile '目标文件路径' [option]

参数说明

其中 option 参数常用的 5 个选项

  • FIELDS TERMINATED BY '字符串':设置字符串为字段的分割符,默认值为 \t
  • FIELDS ENCLOSED BY '字符':设置字符串括上 char varchar text 等字符型字段,默认值为 无任何符号
  • FIELDS OPTIONALLY ENCLOSED BY '字符':设置字符串括上字段的值,默认值为 无任何符号
  • LINES STARTING BY '字符串':设置每一行开头的字符,默认值为 无任何字符
  • FIELDS ESCAPED BY '字符':设置转义字符,默认值为 \
  • LINES TERMINATED BY '字符串':设置每行结束符,默认值为 \n

示例

select * from pollution into outfile 'G:\\arcgisworkspace\\zypdoc\\text2.csv'
FIELDS TERMINATED BY '\,' OPTIONALLY ENCLOSED BY '\"'
LINES STARTING BY '\>' TERMINATED BY '\r\n';

导入文本文件

  1. 创建对应字段的数据表
create table csv_test2( 
id int(8) primary key, 
name varchar(64), 
value int(32) 
); 
  1. 导入外部数据
LOAD DATA INFILE 'D:\\tjdata_metro\\test\\mysql_infile3.csv' 
INTO TABLE csv_test2 
FIELDS TERMINATED BY '\,' 
OPTIONALLY ENCLOSED BY '\"' 
LINES TERMINATED by'\r\n' 
ignore 1 lines 
(id,name,value); 

上面的 lines terminated by '\r\n' 是要求换行符号,为 windows 的换行

上面的 ignore 1 lines 是忽略第一行的标题行。

FAQ

安装 MySQL 失败可能存在的问题

  • libc.so.6 缺失

大概率是因为下载的 MySQL 版本与 Linux 版本对应不上,可以检查一下 MySQL 压缩包后缀名里面的参数是否与系统版本匹配

  • openssl 缺失

安装 openssl-devel

yum install openssl-devel -y
  • perl 和 libaio 缺失

安装 perl

# 查看与 perl 相关的软件
yum list perl# 选择安装
yum install -y perl.x86_64

安装 libaio

# 查看与 libaio 相关的软件
yum list libaio# 选择安装
yum install -y libaio*

远程连接 MySQL 提示密码校验方式不被允许

如果提示 caching_sha2_password 加密方式不被允许,需要将其修改为 mysql_native_password

alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;

centos7 下登入 MySQL 出现 ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

  1. 编辑配置文件 my.cnf
vim /etc/my.cnf
  1. 在文件末尾添加 skip-grant-tables
# ...
skip-grant-tables
# ...
  1. 重启 MySQL 服务
service mysqld restart
  1. 重新连接 MySQL (不带密码,直接回车)
mysql -uroot -p

参考文献

  • Mysql命令行导入sql数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python--实验15 数据分析与可视化

目录 知识点 1 数据分析概述 1.1流程 1.2定义 1.3数据分析常用工具 2 科学计算 2.1numpy 2.1.1定义 2.1.2创建数组的方式 2.1.3np.random的随机数函数 3 数据可视化 3.1定义 3.2基本思想 3.3Matplotlib库 3.3.1模块 4 数据分析 4.1Pandas 4.2数据结构 4.3基…

伪原创文章生成器软件,为你自动写作文章效率高

在当今快节奏的数字化时代,内容创作的需求如潮水般涌来。无论是博主们需要频繁更新的优质博文,还是企业宣传需要的大量文案,亦或是学者们的研究成果阐述,都对写作的效率提出了极高的要求。而就在这时,伪原创文章生成器…

软件测试点

案例: 需求: 动物品系:动物类型-动物品系体重:[1,无穷)年龄: 等价类:6个 界面测试: 默认值、颜色、布局动物品系下拉框,数据来源,排序规则 功能测试: …

Python游戏开发之制作捕鱼达人游戏-附源码

制作一个简单的“捕鱼达人”游戏可以使用Python结合图形界面库,比如Pygame。Pygame是一个流行的Python库,用于创建视频游戏,它提供了图形、声音等多媒体的支持。以下是一个基础的“捕鱼达人”游戏框架,包括玩家控制一个炮台来射击…

Java并发编程与高并发解决方案笔记

本课程将结合大量图示及代码演示,带你掌握多线程并发编程(线程安全,线程调度,线程封闭,同步容器等)与高并发处理思路与手段(扩容,缓存,队列,拆分等&#xff0…

Linux—KVM虚拟化中(虚拟机克隆,快照,还原,删除)等应用实例

🏡作者主页:点击! 🐧Linux基础知识(初学):点击! 🐧Linux高级管理防护和群集专栏:点击! 🔐Linux中firewalld防火墙:点击! ⏰️创作…

在不同环境中,Java应用程序和MySQL等是如何与Docker进行交互和操作的?

1. 本地开发环境 在本地开发环境中,可以使用Docker Compose来管理和运行Java应用程序容器和MySQL容器。通常,会创建一个docker-compose.yml文件,定义需要的服务及其配置。 以下是一个示例docker-compose.yml文件: version: 3 services:app…

最优化理论与方法-第十讲-补充,鞍点与强对偶

文章目录 1. 原问题和对偶问题2. Slater 条件3. 鞍点 1. 原问题和对偶问题 用原问题(Primal Problem)中的P表示原问题,具体如下: ( P ) min ⁡ f ( x ) s t . g i ( x ) ≤ 0 , i 1 , ⋯ , m , h i ( x ) 0 , i 1 , ⋯ , l , x ∈ X \begin{equatio…

外部网络设计

外部网络设计 https://support.huawei.com/enterprise/zh/doc/EDOC1100368575/e64f745b#ZH-CN_TOPIC_0268148455 在Fabric网络的资源模型设计中,通过在Border节点创建外部网络,使得园区内部终端能够访问外部Internet等。Border上创建的每个外部网络资源…

【Zynq UltraScale+ RFSoC】~~~

Zynq UltraScale RFSoC 系列为 5G 无线和射频级模拟应用引入了颠覆性的集成和架构突破,可直接支持整个 5G sub-6GHz 频段。这个创新系列现已开始批量生产。此设计演示展示了多通道(8T8R 或 16T16R)Zynq UltraScale RFSoC 评估工具工具工具&am…

【芯片设计- RTL 数字逻辑设计入门 9.1 -- CRG模块】

请阅读【芯片设计 RTL 数字逻辑设计扫盲 】 转自:芯片设计基础 – CRG模块 文章目录 CRG模块CRG时钟系统CRG复位系统同步复位同步复位的优点同步复位的缺点 异步复位异步复位的优点异步复位的缺点 异步复位同步释放 CRG模块 CRG是芯片里的时钟和复位生成模块&#…

AIoTedge 智能边缘物联网平台

AIoTedge智能边缘物联网平台是一个创新的边云协同架构,它为智能设备和系统提供了强大的数据处理和智能决策能力。这个平台的核心优势在于其边云协同架构设计,它优化了数据处理速度,提高了系统的可靠性和灵活性,适用于多种场景&…

JVM-垃圾回收与内存分配

目录 垃圾收集器与内存分配策略 引用 对象的访问方式有哪些?(句柄和直接指针) Java的引用有哪些类型? 如何判断对象是否是垃圾? 请列举一些可作为GC Roots的对象? 对象头了解吗? mark word(hashcode、分代、锁标志位)、…

Vulnhub靶场DC-7练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集1. 获取用户名/密码2. ssh连接目标主机3. drush命令修改Drupal密码 0x03 漏洞查找与利用1. Drupal写入php木马2. 连接shell3. 反弹shell并提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-…

GitHub CLI 发布 2.53.0

gh 是 GitHub 官方的命令行客户端工具,在此推荐给每一位在参与、想参与到 GitHub 上开源项目的小伙伴。体验异常舒适! 常用的命令包括有: 登陆认证 gh auth login克隆代码仓库 gh repo clone linuxsuren/api-testing创建 Fork 仓库 gh repo f…

机器学习基础入门(1)

最近也在努力的想要学习些机器学习的知识,目前正在了解各个概念及术语,下面就把学习到的概念都列出来。 人工智能 (AI) Artificial intelligence 人工智能生成内容(AIGC) 机器学习(ML) Machine Learning …

系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统(OAS)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.6 办公自动化系统(OAS) 3.6.1 办公自动化系统的概念3.6.1.1 办公活动3.6.1.1 办公自动化的概念 3.6.2 办公自动化系统的功能3.6.2.1 事务处理3.6.2.1.1 单机系统3.6.2.1.2 多机系统 3.6.2.2 信息管理3.6.2.…

Windows tasklist命令详解,Windows查看进程

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 tasklist 可以…

安卓系统签名的制作与使用(SignApk.jar)踩坑记录

看到这里的你应该能区分apk签名跟系统签名吧,如果无法区分的请看下面链接 android 应用的证书签名跟系统签名 看过上面的文章应该知道系统签名需要的文件清单大概有哪些 前两个是编译安卓系统时在build目录下,详细目录为 /build/target/product/security 每组签名用途不同&am…

VUE3【实用教程】(2024最新版)

VUE3 概述 Vue 2 已于 2023 年 12 月 31 日停止维护,请用 Vue 3 vue3 的优势 性能更好体积更小更好的 TS 支持更好的代码组织更好的逻辑抽离更多新功能 vue3 升级的新功能 https://sunshinehu.blog.csdn.net/article/details/137834437 API 风格 vue3 有两种A…