MySQL系列:系列结构和基础管理

news2025/2/4 18:03:21

文章目录

    • MySQL工作模型及实例
      • MySQL 客户端/服务器工作模型(C/S)
      • 服务端:实例
      • MySQLd的程序结构
      • MySQL的逻辑结构
      • MySQL的物理存储结构
    • MySQL基础管理
      • 用户管理
      • 权限管理
      • 连接管理
      • 初始化配置
      • 启动关闭
      • 多实例

MySQL工作模型及实例

MySQL 客户端/服务器工作模型(C/S)

image

1.本地socket链接方式

socket=/tmp/mysql.sock

mysql -uroot -p -S /tmp/mysql.sock

image

说明:只能在本地使用,不依赖于IP和端口

2.远程TCPIP链接方式

mysql -uroot -p -h 127.0.0.1 -P 3306

image

服务端:实例

实例:mysqld+工作线程+预分配的内存结构

功能:管理数据

image

MySQLd的程序结构

image

查看连接线程

show processlist;

image

MySQL的逻辑结构

表+库

查看mysql中所有的数据库

show databases;

image

切换到某个数据库

use mysql;

image

查看库中所有的表

show tables;

image

查看表结构

desc user;

image

MySQL的物理存储结构

段:一个表就是一个段,可以由1个或者多个区构成

区:一个区(簇)默认1M,由连续的64个page构成

页:一个页,默认16KB,由连续的4个OS block构成

OS 块:一个块,4KB,由连续的8个扇区构成

扇区:一个扇区,512B

image

MySQL基础管理

用户管理

1.用户的定义 mysql@'白名单'

robin@‘localhost’ : robin用户能够通过本地登录MySQL(socket)

robin@‘192.168.0.130’: robin用户能够通过192.168.0.130远程登录MySQL服务器

robin@‘192.168.0.%’: robin用户能够通过192.168.0.xx/24远程登录MySQL服务器

robin@‘192.168.0.5%’: robin用户能够通过192.168.0.50-59远程登录MySQL服务器

robin@‘192.168.0.130/255.255.254.0’: robin用户能够通过192.168.0.130远程登录MySQL服务器 23位子网掩码

robin@‘%’: robin用户能够通过所有IP远程登录MySQL服务器

robin@‘vmcode’: robin用户能够通过主机名为vmcode远程登录MySQL服务器

robin@‘vmcode.cn’: robin用户能够通过域名为vmcode.cn远程登录MySQL服务器

2.用户管理

查询用户信息

select user,host,authentication_string from mysql.user;

image

创建用户

create user robin@'localhost';

image

创建用户并设置密码

create user robin@'192.168.0.%' identified by 'admin123';

image

mysql所有用户存储位置:cd /data/mysql/3306/data/mysql 中的user.MYD文件

image

执行命令:strings user.MYD

image

修改用户密码

alter user robin@'localhost' identified by 'admin123';

image

删除用户

drop user robin@'localhost';

image

注意:8.0版本以前,可以通过grant命令建立用户和授权

权限管理

1.查看权限:

show privileges;

image

+-------------------------+---------------------------------------+---------------+
| Privilege               | Context                               | Comment                                               |
+-------------------------+---------------------------------------+---------------+
| Alter                   | Tables                                | To alter the table                                    |
| Alter routine           | Functions,Procedures                  | To alter or drop stored functions/procedures          |
| Create                  | Databases,Tables,Indexes              | To create new databases and tables                    |
| Create routine          | Databases                             | To use CREATE FUNCTION/PROCEDURE                      |
| Create temporary tables | Databases                             | To use CREATE TEMPORARY TABLE                         |
| Create view             | Tables                                | To create new views                                   |
| Create user             | Server Admin                          | To create new users                                   |
| Delete                  | Tables                                | To delete existing rows                               |
| Drop                    | Databases,Tables                      | To drop databases, tables, and views                  |
| Event                   | Server Admin                          | To create, alter, drop and execute events             |
| Execute                 | Functions,Procedures                  | To execute stored routines                            |
| File                    | File access on server                 | To read and write files on the server                 |
| Grant option            | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess   |
| Index                   | Tables                                | To create or drop indexes                             |
| Insert                  | Tables                                | To insert data into tables                            |
| Lock tables             | Databases                             | To use LOCK TABLES (together with SELECT privilege)   |
| Process                 | Server Admin                          | To view the plain text of currently executing queries |
| Proxy                   | Server Admin                          | To make proxy user possible                           |
| References              | Databases,Tables                      | To have references on tables                          |
| Reload                  | Server Admin                          | To reload or refresh tables, logs and privileges      |
| Replication client      | Server Admin                          | To ask where the slave or master servers are          |
| Replication slave       | Server Admin                          | To read binary log events from the master             |
| Select                  | Tables                                | To retrieve rows from table                           |
| Show databases          | Server Admin                          | To see all databases with SHOW DATABASES              |
| Show view               | Tables                                | To see views with SHOW CREATE VIEW                    |
| Shutdown                | Server Admin                          | To shut down the server                               |
| Super                   | Server Admin                          | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
| Trigger                 | Tables                                | To use triggers                                       |
| Create tablespace       | Server Admin                          | To create/alter/drop tablespaces                      |
| Update                  | Tables                                | To update existing rows                               |
| Usage                   | Server Admin                          | No privileges - allow connect only                    |
+-------------------------+---------------------------------------+---------------------------+

2.授权、回收权限操作

语法:

8.0-: grant 权限1,权限2,... on 对象 to 用户 identified by '密码';

8.0+:create user 用户 identified by '密码'; grant 权限1,权限2,... on 对象 to 用户;

grant 权限1,权限2,.... on 对象 to 用户 identified by '密码' with grant option;

ALL : 管理员(不包括grant option权限)

权限1,权限2,… : 普通用户(业务用户,开发用户)

Grant option : 给别的用户授权

对象:

*.* :- -----> chmod -R 755 /

robin.* -----> chmod -R 755 /robin

robin.t1 -----> chmod -R 755 /robin/t1

(1).创建并授权管理员用户robin,能够通过192.168.0.%网段登录并管理数据库

grant all on *.* to robin@'192.168.0.%' identified by 'admin123' with grant option;

image

(2).查看权限

show grants for robin@'192.168.0.%';

image

(3).查看全部用户权限

select * from mysql.user \G -- \G竖排显示

image

(4).创建并授权一个test@'192.168.0.%'业务用户,能够对test库下所有对象进行create,select,update,delete,insert操作

grant create,select,update,delete,insert on test.* to test@'192.168.0.%' identified by 'admin123';

image

(5)查看权限

select * from mysql.db \G

image

(6).各权限表说明

mysql.db: 基于库结构的权限 test.*

mysql.tables_priv: 基于表结构的权限 test.t1

mysql.columns_priv: 基于列结构的权限 列

mysql.procs_priv: 基于存储过程结构的权限

(7).回收权限

MySQL不同通过重复授权的方式修改权限,只能通过回收权限方式进行修改

revoke create on test.* to test@'192.168.0.%';

image

扩展:超级管理员密码忘记解决方案

–skip-grant-tables :跳过授权表

–skip-networking :跳过TCP/IP连接

1.关掉数据库

systemctl stop mysqld

2.使用安全模式启动

service mysqld start --skip-grant-tables --skip-networking
#或者
mysqld_safe --skip-grant-tables --skip-networking &

image

3.登录数据库并修改密码

mysql> alter user root@'localhost' identified by 'admin123';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges; #手工加载授权表
Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@'localhost' identified by 'admin123';
Query OK, 0 rows affected (0.00 sec)

4.重启数据库

service mysqld restart

连接管理

1.mysql自带客户端

mysql:

参数列表:

-u 用户名-p 密码-S 本地socket文件位置-h 数据库IP地址

-P 数据库端口号-e 免交互执行数据库命令< 导入sql脚本

image

Socket:

前提:数据中必须实现授权robin@'lcoalhost’用户 也就是哪个localhost授权了就可以登录

mysql -urobin -padmin123 -S /tmp/mysql.sock
mysql -urobin -p -S /tmp/mysql.sock
mysql -padmin123 -S /tmp/mysql.sock  #root用户
mysql  #默认会去找/tmp/mysql.sock
mysql -uroot -padmin123

TCP/IP:

前提:必须提前创建好可以远程连接的用户(例如:robin@‘192.168.0.%’)

mysql -urobin -p -h 192.168.0.130 -P 3306

MySQL区分连接是远程还是本地连接

show processlist;

image

MySQL免交互运行命令

mysql -uroot -padmin123 -e "select @@datadir"

image

MySQL导入SQL脚本

yum install -y lrzsz
rz -e
mysql -uroot -p < /opt/my.sql

image

image

image

初始化配置

1.三种方式:

源码安装------>编译过程中设置初始化参数

配置文件------>数据库启动之前,设定配置文件参数 /etc/my.cnf

启动脚本命令行

2.配置文件读取顺序

/etc/my.cnf ---->/etc/mysql/my.cnf ----> /usr/local/mysql/etc/my.cnf ---->~/.my.cnf

mysqld --help --verbose | grep my.cnf

image

3.配置

[服务器端] :影响数据库服务端运行

[mysqld]

[mysql_safe]

[server] :代表服务端的所有

[客户端]:影响本地客户端连接,不影响远程客户端

[mysql]

[mysqldump]

[client] :代表客户端的所有

启动关闭

启动

systemctl start mysqld ------>mysql.server ------>mysql_safe   ------>mysqld
mysqld_safe和mysqld,可以在启动数据库时,加入自己执行的参数,例如--defaults-file=/usr/lcoal/mysql/etc/my.cnf

关闭

systemctl stop mysqld
service mysqld stop 
/etc/init.d/mysqld stop
mysqladmin -uroot -padmin123 shutdwon
mysql -uroot -padmin123 -e "shutdwon"

多实例

一.同版本多实例

(1).规划

配置文件 3份 :/data/mysql/330{7…9}/my.cnf

数据目录 3份:/data/mysql/330{7…9}/data

日志目录 3份:/data/mysql/330{7…9}/binlog

Socket 3份: /tmp/mysql330{7…9}.sock

端口 3份:prot=3307,3308,3309

server_id 3份:server_id=7,8,9

(2).配置过程

1.创建需要的目录

mkdir -p /data/mysql/330{7..9}/{data,binlog}

2.创建配置文件

cat>/data/mysql/3307/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/3307/data
socket=/tmp/mysql3307.sock
log_error=/data/mysql/3307/mysql.log
port=3307
server_id=7
log_bin=/data/mysql/3307/binlog
EOF

cat>/data/mysql/3308/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/3308/data
socket=/tmp/mysql3308.sock
log_error=/data/mysql/3308/mysql.log
port=3308
server_id=8
log_bin=/data/mysql/3308/binlog
EOF

cat>/data/mysql/3309/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql/3309/data
socket=/tmp/mysql3309.sock
log_error=/data/mysql/3309/mysql.log
port=3309
server_id=9
log_bin=/data/mysql/3309/binlog
EOF

3.初始化数据

mv /etc/my.cnf /etc/my.cnf.bak
#World-writable config file '/data/mysql/3307/my.cnf' is ignored.
#mysql担心这种文件被其他用户恶意修改,所以忽略掉这个配置文件
chmod 644 /data/mysql/330{7..9}/my.cnf
chown -R mysql.mysql /data/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3307/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3308/data --basedir=/usr/local/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3309/data --basedir=/usr/local/mysql

4.准备启动脚本

cat>/usr/lib/systemd/system/mysqld3307.service<<EOF
[Unit]
Description=MySQL Server 7
Documentation=man:mysqld(7)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3307/my.cnf
LimitNOFILE = 5000
EOF


cat>/usr/lib/systemd/system/mysqld3308.service<<EOF
[Unit]
Description=MySQL Server 8
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3308/my.cnf
LimitNOFILE = 5000
EOF


cat>/usr/lib/systemd/system/mysqld3309.service<<EOF
[Unit]
Description=MySQL Server 9
Documentation=man:mysqld(9)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3309/my.cnf
LimitNOFILE = 5000
EOF

5.启动多实例

systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309

6.启动完成

netstat -tulnp | grep mysqld

image

二.不同版本多实例

1.下载

mkdir -p /usr/local/src/{mysql56,mysql80}
wget -P /usr/local/src/mysql56 https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.6/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
cd /usr/local/src/mysql56
tar -zxvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz
ln -s /usr/local/src/mysql56/mysql-5.6.51-linux-glibc2.12-x86_64 /usr/lcoal/mysql56
wget -P /usr/local/src/mysql80 https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.23-linux-glibc2.12-x86_64.tar
cd /usr/local/src/mysql80 
tar -xvf mysql-8.0.23-linux-glibc2.12-x86_64.tar
ln -s /usr/local/src/mysql56/mysql-8.0.23-linux-glibc2.12-x86_64
vim /etc/profile
#注释掉mysql
source /etc/profile
# 打开新窗口 因为source没用
mkdir -p /data/mysql/331{7..9}/{data,binlog}
chown -R mysql.mysql /data/mysql/

2.准备配置文件

cat>/data/mysql/3317/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql56
datadir=/data/mysql/3317/data
socket=/tmp/mysql3317.sock
log_error=/data/mysql/3317/mysql.log
port=3317
server_id=17
log_bin=/data/mysql/3317/binlog
EOF

cat>/data/mysql/3318/my.cnf<<EOF
[mysqld]
basedir=/usr/local/mysql80
datadir=/data/mysql/3318/data
socket=/tmp/mysql3318.sock
log_error=/data/mysql/3318/mysql.log
port=3318
server_id=18
log_bin=/data/mysql/3318/binlog
EOF

3.初始化数据

#5.6
/usr/local/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/3317/data --basedir=/usr/local/mysql56
/usr/local/mysql80/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/mysql/3318/data --basedir=/usr/lcoal/mysql80 
#5.6报错
Installing MySQL system tables.../usr/local/mysql56/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
yum install -y libaio

4.准备启动脚本

cat>/usr/lib/systemd/system/mysqld3317.service<<EOF
[Unit]
Description=MySQL Server 17
Documentation=man:mysqld(17)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql56/bin/mysqld --defaults-file=/data/mysql/3317/my.cnf
LimitNOFILE = 5000
EOF

cat>/usr/lib/systemd/system/mysqld3318.service<<EOF
[Unit]
Description=MySQL Server 18
Documentation=man:mysqld(18)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql80/bin/mysqld --defaults-file=/data/mysql/3318/my.cnf
LimitNOFILE = 5000
EOF

image

5**.启动mysql5.7和测试**

vim /etc/profile
#还原mysql配置
source /etc/profile
mv /etc/my.cnf.bak /etc/my.cnf
/etc/init.d/mysqld start 
mysql -S /tmp/mysql3318.sock

image

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

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

相关文章

【线上研讨会】PowerFLOW汽车空调噪声和风扇噪声解决方案

会议地址&#xff1a; 达索系统官方在线研讨会平台

2024美赛E题保姆级分析完整思路代码数据教学

2024美国大学生数学建模竞赛E题保姆级分析完整思路代码数据教学 E题&#xff1a;Sustainability of Property Insurance&#xff08;财产保险的可持续性&#xff09; 这道题目同样是比赛的热门题目&#xff0c;是很多同学在训练的时候经常做的题目类型了&#xff0c;属于大数据…

【Qt】—— Hello World程序的实现

目录 &#xff08;一&#xff09;使⽤"按钮"实现 1.1 纯代码方式实现 1.2 可视化操作实现 &#xff08;二&#xff09;使⽤"标签"实现 2.1 纯代码方式实现 2.2 可视化操作实现 &#xff08;一&#xff09;使⽤"按钮"实现 1.1 纯代码方式实…

python爬虫3

1.异常处理&#xff0c;使代码更加健壮 静态cookie可视绕过登录的限制 快代理是一个代理平台 # https://movie.douban.com/j/chart/top_list?type5&interval_id100%3A90&action& # start0&limit20# https://movie.douban.com/j/chart/top_list?type5&int…

Java_简单模拟实现ArrayList_学习ArrayList

文章目录 一、 了解线性表和顺序表区别1.线性表2.顺序表 二、模拟实现1.定义接口2.定义MyArrayList3.成员变量以及构造方法4.实现打印数组5.实现add方法6.实现查找某个数是否存在contains或者某个数的下标indexOf7.获取或更改pos位置的值 get和set8.获取数组大小 size9.删除某个…

C语言:文件操作详解

创作不易&#xff0c;友友们给个三连吧&#xff01;&#xff01; 一、为什么我们需要使用文件 我们在写程序的时候&#xff0c;输入的数据是存储在电脑内存中的&#xff0c;如果程序退出内存回收&#xff0c;相应数据也就丢失了&#xff0c;等再次运行程序&#xff0c;就看不到…

【IMAX6U移植OpenCV】

IMAX6U移植OpenCV V1.3 一 安装通用交叉编译器1.1 下载通用交叉编译器1.2 安装通用交叉编译器1.3 验证通用交叉编译器 二 搭建 OpenCV 3.4.1 的编译环境2.1 下载 OpenCV 3.4.1 源码2.2 配置 OpenCV 环境2.3 编译 OpenCV 源码 三 Qt 项目中加入OpenCV3.1 Qt 项目的 pro 文件Open…

Redis单机-主从集群-哨兵集群-分片集群 搭建教程

Redis集群 本章是基于CentOS7下的Redis集群教程&#xff0c;包括&#xff1a; 单机安装RedisRedis主从Redis分片集群 1.单机安装Redis 首先需要安装Redis所需要的依赖&#xff1a; yum install -y gcc tclredis-6.2.4.tar.gz 然后将Redis安装包上传到虚拟机的任意目录&am…

2024美赛A题完整思路代码分析:建立竞争机理方程+遗传算法优化

A题是自由度比较大的场景限定下的模型构建&#xff0c;相对比较容易&#xff0c;核心是找到现有的成熟的数学模型&#xff0c;然后找到合适的数据进行证明得到结论&#xff0c;估计大部分是目标优化问题。&#xff08;不限制专业&#xff09; B题属于较为经典的物理建模&#…

Linux基础知识合集

整理了一下学习的一些关于Linux的一些基础知识&#xff0c;同学们也可以通过公众号菜单栏查看&#xff01; 一、基础知识 Linux基础知识 Linux命令行基础学习 Linux用户与组概念初识 Linux文件与目录权限基础 Linux中文件内容的查看 Linux系统之计划任务管理 二、服务器管理 Vm…

【靶场实战】Pikachu靶场XSS跨站脚本关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 XSS跨站脚本概述 Cross-Site Scripting 简称为“CSS”&#xff…

HTTP(Java web方向补充篇)

HTTP&#xff08;Java web方向补充篇&#xff09; HTTP简介 概念&#xff1a;Hyper Text Transfer Protocol,超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则 HTTP协议特点&#xff1a; 基于TCP协议&#xff1a;面向连接&#xff0c;安全基于请求-响应模…

C语言指针学习 之 指针是什么

前言 指针是C语言中一个重要概念&#xff0c;也是C语言的一个重要特色&#xff0c;正确而灵活地运用指针可以使程序简洁、紧凑、高效。每一个学习和使用C语言的人都应当深入的学习和掌握指针&#xff0c;也可以说不掌握指针就没有掌握C语言的精华。 一、什么是指针 想弄清楚什…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(十六)

商家端订单管理模块 1. 订单搜索1.1 需求分析和设计1.2 代码实现1.2.1 admin/OrderController1.2.2 OrderService1.2.3 OrderServiceImpl 2. 各个状态的订单数量统计2.1 需求分析和设计2.2 代码实现2.2.1 admin/OrderController2.2.2 OrderService2.2.3 OrderServiceImpl2.2.4 …

python执行linux系统命令的三种方式

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 1. 使用os.system 无法获取命令执行后的返回信息 import osos.system(ls)2. 使用os.popen 能够获取命令执行后的返回信息 impor…

红队渗透靶机:LEMONSQUEEZY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录扫描 1、dirsearch 2、gobuster WEB phpmyadmin wordpress wpscan 登录wordpress 登录phpmyadmin 命令执行 反弹shell 提权 get user.txt 信息收集 本地提权 信息收集 1、arp ┌──(root㉿ru)-[~…

Python如何运用爬虫爬取京东商品评论

寻找数据真实接口 打开京东商品网址(添加链接描述) 查看商品评价。我们点击评论翻页&#xff0c;发现网址未发生变化&#xff0c;说明该网页是动态网页。 我们在浏览器右键点击“检查”&#xff0c;&#xff0c;随后点击“Network”&#xff0c;刷新一下&#xff0c;在搜索框中…

【实战系列----消息队列 数据缓存】rabbitmq 消息队列 搭建和应用

线上运行图&#xff0c;更新不算最新版&#xff0c;但可以使用修改线程等补丁功能&#xff0c;建议使用新版本。 远程服务器配置图: 这个可以更具体情况&#xff0c;因为是缓存队列理所当然 内存越大越好&#xff0c;至于核心4核以上足够使用。4核心一样跑 这里主要是需要配置服…

Linux下gcc的使用与程序的翻译

gcc和程序的翻译过程 gcc介绍程序的翻译过程预编译编译汇编链接 命令行式宏定义 gcc介绍 gcc是一款编译C语言编译器&#xff0c;可以把我们用vim写的代码编译成可执行程序。编译C用g进行编译&#xff0c;C的文件后缀是test.cc或test.cpp或test.cxx 如果要安装g就执行以下命令 …

QPL:一种新型的Text-to-SQL任务中间表示形式

导语 本文提出了一种叫做Query Plan Language (QPL)的语言&#xff0c;用来将复杂SQL语句分解为更加简单的子语句。QPL具有以下优势&#xff1a;1&#xff09;可以转述为简单问题&#xff0c;从而创建了一个 < 复杂问题&#xff0c;分解问题 > <复杂问题&#xff0c…