漳州正规网站建设公司,泰安网站制作电话,无忧企业网站管理系统,桂林户外论坛MySQL 介绍
MySQL 的特性 MySQL 是基于开源协议发布的#xff0c;可以免费使用#xff0c;也可以基于源码进行二次开发。 MySQL 使用标准 SQL 语言进行管理。 MySQL 可以运行于多个系统上#xff0c;具有跨平台特性#xff0c;并且支持多种语言。 MySQL 使用插件式存储…MySQL 介绍
MySQL 的特性 MySQL 是基于开源协议发布的可以免费使用也可以基于源码进行二次开发。 MySQL 使用标准 SQL 语言进行管理。 MySQL 可以运行于多个系统上具有跨平台特性并且支持多种语言。 MySQL 使用插件式存储引擎不同的存储引擎有着不同的功能和特性使用者可以根据需要灵 活选择。 MySQL 基于单进程多线程的模式进行工作。 MySQL 提供了大量的测试组件和诸多的扩展 MySQL 安装
MySQL 主流的三种安装方式
安装方式说明包管理器进行安装配置好 MySQL 仓库源用包管理器进行在线安装二进制包本地安装下载己编译完成的压缩包展开至特定路径并经过简单配置后即可使用源码编译安装下载指定版本源码在本地进行编译安装 包管理器进行安装
yum list mysql mysql-server#安装 mysql-server会自动安装客户端包
yum install -y mysql-server#服务状态
systemctl status mysqld.service#启动服务
systemctl enable --now mysqld.service#自动创建的账户getent passwd mysql
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin#查看家目录
ll /var/lib/mysql
二进制包安装
这里的二进制包是指己经编译完成以压缩包提供下载的文件下载到本地之后释放到自定义目录再进行配置即可
#安装依赖
yum -y install libaio numactl-libs ncurses-compat-libs#创建组和用户
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql#下载包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql8.0.20-linux-glibc2.12-x86_64.tar.xz#解压至指定目录这个目录只能写 /usr/local/
tar xf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local/
ln -s mysql-8.0.20-linux-glibc2.12-x86_64/ mysql
chown -R root.root mysql/#创建环境变量
echo PATH/usr/local/mysql/bin:$PATH /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.shecho $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#创建主配置文件
vim /etc/my.cnf
[mysqld]
datadir/data/mysql
skip_name_resolve1
socket/data/mysql/mysql.sock
log-error/data/mysql/mysql.log
pid-file/data/mysql/mysql.pid
[client]
socket/data/mysql/mysql.sock#创建数据目录
mkdir -pv /data/mysql#初始化,本地root用户空密码
#如果使用 --initialize 选项会生成随机密码要去 /data/mysql/mysql.log中查看mysqld --initialize-insecure --usermysql --datadir/data/mysql#加启动脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqld#启动服务
systemctl start mysqld.service
源码编译安装
源码编译安装与前面的二进制包安装相比较只多了编译过程
#安装依赖
yum -y install gcc gcc-c cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper#创建用户
useradd -r -s /sbin/nologin -d /data/mysql mysql#创建目录修改权限
mkdir -pv /data/mysql
chown mysql.mysql /data/mysql#下载源码
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.51.tar.gz
tar xf mysql-5.6.51.tar.gz
cd mysql-5.6.51cmake . -DCMAKE_INSTALL_PREFIX/apps/mysql -DMYSQL_DATADIR/data/mysql/ -DSYSCONFDIR/etc/ -DMYSQL_USERmysql -DWITH_INNOBASE_STORAGE_ENGINE1 -DWITH_ARCHIVE_STORAGE_ENGINE1 -DWITH_BLACKHOLE_STORAGE_ENGINE1 -DWITH_PARTITION_STORAGE_ENGINE1 -DWITHOUT_MROONGA_STORAGE_ENGINE1 -DWITH_DEBUG0 -DWITH_READLINE1 -DWITH_SSLsystem -DWITH_ZLIBsystem -DWITH_LIBWRAP0 -DENABLED_LOCAL_INFILE1 -DMYSQL_UNIX_ADDR/data/mysql/mysql.sock -DDEFAULT_CHARSETutf8 -DDEFAULT_COLLATIONutf8_general_cimake -j 2 make install#配置环境变量
echo PATH/apps/mysql/bin:$PATH /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh#初始化
cd /apps/mysql/
./scripts/mysql_install_db --datadir/data/mysql/ --usermysql#生成配置文件
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf#生成服务脚本
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld#加开机启动项
chkconfig --add mysqld#启动服务
service mysqld start
MySQL 多实例
拿 MySQL 数据库来说明就是在一台服务器上运行多个 MySQL 服务端进程每个进程监听一个端口 330633073308维护一套属于其自己的配置和数据客户端使用不同的端口来连接具体服端 进程从而实现对不同的实例的操作 多实例的优点 节约硬件资源在某些场景下比如说测试调研新旧业务并存等需要配置不同的 MySQL 数据库版本而又没有足够多的服务器资源则可以选择在一台服务器上用不同的版本实现多开来 满足需求 便于对比在一个完全相同的硬件环境中运行不同的 MySQL 版本使用相同的参数进行测试 调研时可以最大程度的减少外部环境因素的影响便于得出更准确的结论 便于管理在一台服务器上运行多个实例同理只需要在这一台服务器上配置安全规则就可以完成对多个实例的访问授权而且对于数据库的备份停启等工作也只需要在这一台服务器上完成
多实例的缺点 资源抢占一台服务器上运行多个服务实例资源总量恒定一个实例占用的资源无法被另一个实 例所使用在这种情况下服务性能会受到影响无法体现 MySQL 服务的实际性能 存在单点风险一台服务器上部署多个服务实例如果该服务器当机则这多个服务实例都会受影响 MySQL 组成和常用工具
MySQL 主要组成
mysql 基于 C/S 模式提供服务主要有客户端程序和服务端程序组成另外还有一些管理工具 服务端主要组成 客户端主要组成
程序功能mysqld_safe安全启动脚本mysqld服务端程序是mysql服务的核心程序mysqld_multi多实例工具 客户端主要组成
程序功能mysql基于mysql 协议的交互式 CLI 工具mysqldump备份工具mysqladmin服务端管理工具mysqlimport数据导入工具 MyISAM存储引擎的管理工具
程序功能myisamchk检查MyISAM库myisampack打包MyISAM表只读 MySQL 客户端使用
MySQL 服务基于 C/S 架构用户主要使用客户端工具来与远程服务端进行连接从而与 MySQL 服务进 行交互
MySQL 客户端常用选项
mysql [OPTIONS] [database]#常用选项
-V|--version #显示客户端版本
-u|--username #指定远程连接用户名
-p|--password[name] #指定密码, 默认为空
-h|--hosthost #指定服务端主机
-P|--portport #指定端口默认3306
-S|--socketname #指定连接时使用的socket文件该文件在服务端启动后生成
-D|--databasedb #指定数据库
-H|--html #以html格式输出
-X|--xml #以xml格式输出
-t|--table #以table格式输出默认项
-E|--vertical #垂直显示执行结果
-v|--verbose #显示详细信息配合 -t 选项
-C|--compress #启用压缩
-G|--named-commands #启用长命令
-e|--executesql #执行完就退出非交互式运行
--promptname #修改命令提示符
--line-numbers #输出行号
--print-defaults #打印参数列表放在最前面
--connect-timeoutN #连接超时时长单位S
--max-allowed-packetN #一次查交互发送或反回数据的大小默认16MB最大值为1GB最小值为4096字节
MySQL 客户端常用命令
MariaDB [(none)] CMD#常用命令
?|\? #显示帮助
help|\h #显示帮助
clear|\c #清屏直接使用无法生效要配合 system 命令使用
exit|\q #退出客户端
quit|\q #退出客户端
status|\s #显示当前状态
use|\u #切换数据库
system|\! #调用系统命令
prompt|\R #修改提示符
source|\. #执行SQL脚本文件
connect|\r #客户端重新连接使用之前的参数
tee|\T #设置文件名将输出结果同时保存一份到指定文件
notee|\t #不保存输出结果至文件
delimiter|\d #自定义SQL语句分隔符
go|\g #将语句送到服务端执行
ego|\G #将语句送到服务端执行垂直显示
print|\p #输出语句但不执行
warnings|\W #总是输出告警信息
nowarning|\w #不输出告警信息
charset|\C #设置编码
edit|\e #先编辑SQL语句再执行mysql \s
--------------
mysql Ver 8.0.39-0ubuntu0.24.04.2 for Linux on x86_64 ((Ubuntu))Connection id: 8 #连接ID
Current database: #当前使用的数据库
Current user: rootlocalhost #连接时的用户名
SSL: Not in use #是否使用ssl
Current pager: stdout
Using outfile:
Using delimiter: ;
Server version: 8.0.39-0ubuntu0.24.04.2 (Ubuntu)
Protocol version: 10 #协议版本
Connection: Localhost via UNIX socket
Server characterset: utf8mb4 #服务器编码
Db characterset: utf8mb4 #数据库编码
Client characterset: utf8mb4 #客户端编码
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock #连接使用的socket 文件
Binary data as: Hexadecimal
Uptime: 7 hours 3 min 21 sec #服务器运行时长Threads: 2 Questions: 5 Slow queries: 0 Opens: 119 Flush tables: 3 Open tables: 38 Queries per second avg: 0.000#性能相关内容
在配置文件中修改提示符
vim /etc/my.cnf.d/client.cnf[client]
prompt(\\u\\h) [\\d]\\#提示符中可用的变量
\C #计数器
\D #年月日时分秒
\d #当前使用的数据库
\h #服务器主机名
\l #命令分隔符默认;
\m #当前时间分钟
\n #换行
\O #月份以英文显示
\o #月份数字显示
\P #pm/am
\R #小时24小时制
\r #小时12小时制
\S #分号
\s #秒数字显示
\t #tab键
\U #客户端用户名和主机
\u #客户端用户名
\v #服务端版本
\w #星期几英文显示
\Y #年份四位数字显示
\y #年份两位数字显示
执行sql脚本
\. /root/test.sqlsource /root/test.sql
mysqladmin 工具
mysqladmin 也是用于管理 mysql 服务的本地工具
mysqladmin [OPTIONS] command command...#常用选项
-?|--help #显示帮助信息
-V|--version #显示客户端版本
-f|--force #删库时不确认
-C|--compress #启用压缩
-h|--hostname #指定服务器地址
-u|--username #指定用户名
-p|--password[name] #指定连接服务器的密码
-P|--portN #指定连接端口默认3306
-l|--local #在本地执行语句不写入binlog
-b|--no-beep #执行出错时不发出告警音
-s|--silent #如果无法连接则静默退出
-c|--countN #总共执行多少次配合-i选项使用
-i|--sleepN #持续执行命令间隔N秒执行一次
-S|--socketname #指定连接时使用的socket文件
-w|--wait[#] #如果连接失败是否等待重试如果指定了具体数字则表示重试几次
--plugin-dirname #客户端查件目录
--print-defaults #显示运行参数
--defaults-filepath #从指定文件中读取选项
--connect-timeoutN #指定连接超时时长
--shutdown-timeoutN #指定关机超时时长
--protocolname #指定连接方式 (tcp|socket|pipe|memory)
--ssl #使用ssl安全功能#命令
create databasename #创建新的数据库
debug #开启调试模式将调试信息写入log
drop databasename #删除指定数据库
extended-status #显示扩展状态
flush-all-statistics #刷新所有统计表
flush-all-status #刷新状态和统计信息
flush-client-statistics #刷新客户端统计信息
flush-hosts #刷新所有缓存的主机
flush-index-statistics #刷新索引统计信息
flush-logs #刷新所有日志
flush-privileges #刷新访问权限
flush-binary-log #刷新二进制日志
flush-engine-log #刷新引擎日志
flush-error-log #刷新错误日志开一个新日志文件
flush-general-log #刷新执行日志
flush-relay-log #刷新中继日志
flush-slow-log #刷新慢查询日志
flush-status #清除状态变量
flush-table-statistics #清除表统计信息
flush-tables #刷新所有表会强制关闭己打开的表
flush-threads #刷新线程缓存
flush-user-statistics #刷新用户统计信息
flush-user-resources #刷新用户资源
kill id,id,... #关闭指定的线程
password [new-password] #修改密码
old-password [new-password] #修改密码时指定旧密码
ping #心跳检测
processlist #显示活动线程列表
reload #刷新授权信息
refresh #刷新所有数据表重新打开日志文件
shutdown #关闭服务
status #简短显示服务端状态
start-slave #开启主从同步
stop-slave #停止主从同步
variables #显示服务端所有变量
version #显示客户端和服务端版本
mycli 工具
MyCLI 是基于 Python 开发的 MySQL 的命令行工具具有自动完成和语法突出显示功能
yum install python38#使用国内源
pip3.8 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip-3.8 install myclimycli -u用户名 -p密码