第三章---MySQL基本管理

news/2024/9/12 15:18:55/文章来源:https://www.cnblogs.com/Tmars/p/18368046

数据库基本管理

MySQL启动关闭流程

mysql是一个典型的C/S服务架构

1.mysql自带的客户端程序(/service/mysql/bin)mysqlmysqladminmysqldump2.mysqld是一个二进制程序,后台的守护进程单线程多线程

1、启动数据库

1、/etc/init.d/mysqld start ---> mysql.server ---> mysqld_safe ---> mysqld
2、systemctl start mysql ---> mysqld_safe ---> mysqld
3、mysqld_safe --defaults-file=/etc/my.cnf ---> mysqld_safe ---> mysqld

2、停止数据库

/etc/init.d/mysqld stop
systemctl stop mysqld# 如果是自己用命令如mysqld_safe启动的mysql,可以用mysqladmin来关闭
mysqladmin -uroot -p123 shutdown  # 无论如何都不建议使用
kill -9 pid
killall mysqld
pkill mysqld# 直接kill数据库可能会出现问题:
1.如果在业务繁忙的情况下,数据库不会释放pid和sock文件
2.号称可以达到和Oracle一样的安全性,但是并不能100%达到
3.在业务繁忙的情况下,丢数据(补救措施,高可用)

二、MySQL设置密码

初始状态下,管理员root,密码为空,默认只允许从本机登录localhost

# 设置初始密码,由于原密码为空,因此-p可以不用
mysqladmin -uroot password "123"# 修改mysql密码
mysqladmin -uroot -p "123" password "456"

三、mysql自带的连接命令mysql

3.1 mysql自带的连接命令mysql

mysql命令介绍

mysql
#常见的特定于客户机的连接选项:
-u:				指定用户  mysql -uroot
-p:				指定密码  mysql -uroot -p567
-h:				指定主机域  mysql -uroot -p567 -h127.0.0.1
-P:				指定端口	mysql -uroot -p567 -h127.0.0.1 -P3307
-S:				指定socket文件 mysql -uroot -p567 -S /tmp/mysql.sock
-e:				指定SQL语句(库外执行SQL语句) mysql -uroot -p567 -e "show databases;"
#--protocol:      指定连接方式 mysql --protocol=TCP  --protocol=socket

使用密码登录

# 1.正确登录命令
# mysql -uroot -p123
# mysql -u root -p123
# mysql  # 以root用户登录本机,密码为空#2.错误登录命令
# mysql -u root -p 123  # -p选项与密码之间不要有空格

两种连接方式

1.TCP/IP的连接方式
2.套接字连接方式,socket连接查看连接方式
mysql> status;
--------------
Connection:		Localhost via UNIX socket3.举例:3.1 tcp/ip连接,通常带有-h选项的都是tcp/ipmysql -uroot -p -h 127.0.0.1 -P 端口号mysql -uroot -p -h 127.0.0.1 -S /tmp/mysql.sock/3.2 socket连接mysql -uroot -p 123(默认连接方式,socket)mysql -uroot -p -hlocalhost 

3.2 第三方的连接工具

1.sqlyog
2.navcat
3.应用程序连接MySQL

四、配置文件

1.mysql配置文件的作用

1.影响服务端的启动
2.影响客户端的连接

2.配置文件的介绍

1. 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效
[mysqld]
;skip-grant-tables
port=3306
character_set_server=utf8
default-storage-engine=innodb
innodb_file_per_table=1#解压的目录
basedir=E:\mysql-5.7.19-winx64
#data目录
datadir=E:\my_data #在mysqld --initialize时,就会将初始数据存入此处指定的目录,在初始化之后,启动mysql时,就会去这个目录里找数据#2. 针对客户端命令的全局配置,当mysql客户端命令执行时,下列配置生效
[client]
port=3306
default-character-set=utf8
user=root
password=123#3. 只针对mysql这个客户端的配置,2中的是全局配置,而此处的则是只针对mysql这个命令的局部配置
[mysql]
;port=3306
;default-character-set=utf8
user=jason
password=4573#!!!如果没有[mysql],则用户在执行mysql命令时的配置以[client]为准

3.统一字符编码

xshell ===> linux ===> mysql数据库
系统编码

#1.命令行临时修改 : 
LANG=us_EN.UTF-8
LANG=zh_CN.UTF-8临时修改报错命令为应文 : LANG=us_EN.UTF-8
#2.修改系统字符集
Centos6 永久修改:[root@db03 ~]# vim /etc/sysconfig/i18n
Centos7 永久修改:[root@db03 ~]# vim /etc/locale.conf

修改mysql数据库默认字符集

  • 方法1:cmake时候指定
cmake .
-DDEFAULT_CHARSET=UTF8 \
-DDEFAULT_COLLATION=UTF8_GENERAL_CI
  • 方法2:配置文件指定
#1.修改配置文件
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci[client]
default-character-set=utf8
[mysql]
default-character-set=utf8#2. 重启服务
#3. 查看修改结果:
\s
show variables like '%char%';

注解:

校验规则: utf8_general_ci1)ci:大小写不敏感2)cs或bin:大小写敏感#一个表里面不可能出现同名不同大小写的字段#查看校验规则
mysql> show collation;

注意:最好在[mysqld]下也加上下述配置,规范一些

# 反向解析
skip-name-resolve# 安装目录和数据目录
basedir= 安装目录
datadir= 数据目录

mysql数据库怎么存入emoji表情

# 第一步:设置数据库字符编码为utf8mb4_general_ci  设置相应表字段字符编码为utf8mb4_general_ci# 第二步:设置my.cnf增加以下配置信息
[client]
default-character-set = utf8mb4[mysql]
default-character-set = utf8mb4[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'# 第三步:重启MySQL 保存表情数据查看数据库就可以看到数据库中有表情字符的存在。

如果没有配置默认编码,也可以在建库指定

#1、创建数据库指定字符集和校验规则
create database if not exists db1 charset utf8 collate utf8_general_ci;#2、修改
alter database db1 charset utf8mb4 collate utf8mb4_general_ci;

创建的新表默认继承其所在库的字符编码,除非你自己指定

# 建表时指定编码
CREATE TABLE `test` (
`id` int(4) NOT NULL AUTO_INCREMENT comment 'id',
`name` char(20) NOT NULL comment '名字',
PRIMARY KEY (`id`) comment '主键'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;# 改表的字符集:
alter table test charset utf8;

批量修改库和表的字符编码

#1、批量修改字符集,30个库,300个表
1.我们先创建10个库
for n in `seq 10`;do mysql -uroot -p123 -e "create database db$n charset gbk;";done#2、库里创建表
for n in `seq 10`;do mysql -uroot -p123 -e "use db$n;create table user$n(id int,name varchar(10)) charset gbk";donefor n in `seq 10`;do mysql -S /data/3309/mysql.sock -uroot -p3309 -e "use db$n;create table user$n(id int,name varchar(10)) charset gbk";done#3、怎么批量修改数据库的字符集????
对于新创建的表会继承库的字符编码,但对于已经存在的老表,修改其所在库的字符编码,表的字符编码是不会修改的
alter database db1 charset utf8;
show create database db1;
show create table user1;修改方式
for n in `seq 10`;do mysql -uroot -p123 -e "alter database db$n charset utf8;use db$n;alter table user$n charset utf8";done

4.设置不区分大小写

注意:开发时,数据库的库名和表名都要小写,因为很多研发使用第三方工具连接数据库,而windows不区分大小写,linux区分大小写,很容易读写错数据库;

mysql> show variables like '%lower%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 0     |
+------------------------+-------+
2 rows in set (0.00 sec)

可以修改配置文件来让数据库不区分大小写:

[root@jason ~]# vim /etc/my.cnf
[mysqld]
lower_case_table_names=1
[root@jason ~]# systemctl restart mysql

五、mysql相关命令

1.mysql连接命令行快捷命令

\c:中断当前输入语句\r:重新连接到服务器\d:设置语句sql结束符    mysql> \d ]\e:编辑命令    输出输入的内容 echo\p:打印当前命令并执行
\G:垂直显示结果
\q:退出mysql    等于 quit exit\g:表示结束    等于 ; 的作用
\h:显示此帮助    等于 help    #help还可以查看命令语法 help create database;\t:不写入outfile
\T:将所有内容附加到给定的输出文件中(只支持本次会话)        \T /tmp/a.log#\n:禁用寻呼机,打印到标准输出。#\P:设置寻呼机[到寻呼机]。通过寻呼机打印查询结果。
\R:更改mysql提示符    \R mysql>>> 
\.:执行一个sql文件    等于 source
\s:从服务器获取状态信息    等于 status
\u:切换数据库    等于 use  #查看当前所在数据库select database();\C:切换到另一个字符集    一般不使用\W:在每个语句后显示警告\w:不在每个语句后显示警告

2.help命令

mysql> help
mysql> help contents    help 用法
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show

3.mysqladmin命令

1.修改密码,设置密码:password
[root@db01 ~]# mysqladmin -uroot -p旧密码 password '新密码'2.关闭MySQL服务:shutdown
[root@db01 ~]# mysqladmin -uroot -p密码 -S socket文件 shutdown3.库外建库:create
[root@db01 ~]# mysqladmin -uroot -p密码 create jason
[root@db01 ~]# mysql -uroot -p123456 -e 'create database jason'4.库外删除数据库:drop
[root@db01 ~]# mysqladmin -uroot -p123456 drop jason
Do you really want to drop the 'jason' database [y/N] y
Database "jason" dropped5.查看配置文件所有的默认参数:variables
[root@db01 ~]# mysqladmin -uroot -p123456 variables
[root@db01 ~]# mysqladmin -uroot -p123456 variables | grep server_id6.检测MySQL进程是否存活:ping
[root@db01 ~]# mysqladmin -uroot -p123456 ping7.查看数据库 慢查询,负载信息:status
[root@db01 ~]# mysqladmin -uroot -p123456 status
Uptime                   MySQL服务器已经运行的秒数
Threads                  活跃线程(客户)的数量 
Questions                从mysqld启动起来自客户问题的数量   已经发送给服务器的查询的个数
Slow queries             已经超过long_query_time秒的查询数量 
Opens                    mysqld已经打开了多少表 
Flush tables             flush ..., refresh和reload命令数量 
Open tables              现在被打开的表数量
Queries per second avg: 0.046	负载8.重载授权表,刷新缓存主机:reload,相当于flush privileges
[root@db01 ~]# mysqladmin -uroot -p123456 reload9.刷新binlog日志
[root@db01 ~]# mysqladmin -uroot -p123456 flush-log

六、初始sql语句

有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写

mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。
SQL语言分为:
DDL:Data definition Language 数据定义语言(CREATE、DROP、ALTER)
DCL:Data control Language 数据控制语言(GRANT,REVOKE,ROLLBACK,COMMIT)
DML:Data Manipulation Language 数据操作语言(INSERT,UPDATE,DELETE)
DQL:Data Query Language 数据查询语言(SELECT)

库、表、记录的增删改查

#1. 操作文件夹
增:create database db1 charset utf8;数据库已存在会报错,使用IF NOT EXISTScreate database if not exists db1 charset utf8;
查:show databases;
改:alter database db1 charset latin1;
删除: drop database db1;#2. 操作文件
先切换到文件夹下:use db1
增:create table t1(id int,name char);
查:show tables
改:alter table t1 modify name char(3);
alter table t1 change name name1 char(2);
删:drop table t1;#3. 操作文件中的内容/记录
增:insert into t1 values(1,'jason1'),(2,'jason2'),(3,'jason3');
查:select * from t1;
改:update t1 set name='sb' where id=2;
删:delete from t1 where id=1;清空表:
delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,auto_increment 表示:自增
primary key 表示:约束(不能重复且不能为空);加速查找

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

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

相关文章

Linux学习/TCP Socket通信

Linux下的TCP Socket通信案例及详解案例 案例一 server.c #include <stdio.h> // 标准输入输出 #include <stdlib.h> //提供通用的工具函数,例如内存分配和程序退出。 #include <string.h> //提供字符串处理函数。 #include <unistd.h> //提供对 POSI…

Rockylinux 9.4 安装部署

Rockylinux安装部署 1、操作系统引入 2024 年 6 月 30 日,CentOS Linux 7 终止其生命周期(EOL),至此 CentOS 全系列版本也已停止维护,属于 CentOS 的时代彻底终结。CentOS 停止维护后,用户将无法获得包括问题修复和功能更新在内的任何软件维护和支持,宕机、服务中断、数…

Rockylinux安装部署

Rockylinux安装部署 1、操作系统引入 2024 年 6 月 30 日,CentOS Linux 7 终止其生命周期(EOL),至此 CentOS 全系列版本也已停止维护,属于 CentOS 的时代彻底终结。CentOS 停止维护后,用户将无法获得包括问题修复和功能更新在内的任何软件维护和支持,宕机、服务中断、数…

NSSCTF [SWPUCTF 2021 新生赛]pop

NSSCTF [SWPUCTF 2021 新生赛]pop进入就看见一串代码,直接开启代审<?phperror_reporting(0); show_source("index.php");class w44m{private $admin = aaa; protected $passwd = 123456;public function Getflag(){//通过该函数来获得flagif($this->admin ==…

性能测试之中间件:告诉你什么是 kafka 和 MQ ?

在如今这个数据驱动的时代,中间件在性能测试中扮演着至关重要的角色。你是否曾听说过Kafka和MQ,却不清楚它们在实际应用中具体的作用是什么?让我们一起来揭开它们的神秘面纱。 Kafka和MQ究竟是什么?它们在性能测试中如何发挥作用,又为何成为现代分布式系统中的关键组成部分…

tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手+常见的服务器IO(发送数据+接收数据)模型

一,TCP与UDP的基本总结 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性…

tcp与udp的总结+connect阻塞+tcp三次握手、四次挥手

一,TCP与UDP的基本总结 TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。TCP是面向连接的,提供可靠、顺序的传输,适用于需要高可靠性的应用,如网页浏览和文件传输。它通过重传机制和流量控制确保数据完整性。UDP是无连接的,速度快但不保证数据的可靠性…

【Linux_install】详细的Ubuntu和win双系统安装指南

@目录1.前期准备1.1 制作启动盘1.2关闭快速启动、安全启动、bitlocker1.2.1 原因1.2.2 进入BIOSshell命令行进入BIOSwindows设置中高级启动在开机时狂按某个键进入BIOS1.2.3 关闭Fast boot和Secure boot1.3 划分磁盘空间1.3.1 查看目前的虚拟内存大小2.开始安装2.1 使用启动盘启…

OpenCV-Python系列之对极几何

点击查看代码 import numpy as np import cv2 as cv img1=cv.imread("data1/1.png",0) # queryimage left image img2=cv.imread("data1/2.png",0) # trainimage right image sift=cv.SIFT_create() # sift1=cv.xfeatures2d.SIFT_create()kp1,des1=sift.d…

Centos7使用RPM包安装Oracle21c数据库(EE)

Centos7使用RPM包安装Oracle21c数据库(EE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…

相交两圆

这篇写的太早了,我自己也看不懂,现在找不到啥基础题适合放了。反正把构型掌握了就好。 Reim引理如图,两圆交于 \(A,B\) 两点,若 \(CD,EF\) 是两圆的弦,满足 \(CAE,DBF\) 分别共线,则 \(CD//EF\) 逆定理:若 \(ABCD\) 共圆,\(E,F\) 分别在 \(CA,DB\) 的延长线上,并满足 …

Centos7使用RPM包安装Oracle21c数据库(XE)

Centos7使用RPM包安装Oracle21c数据库(XE) 官方下载链接21c标准版 安装包信息: 文件名:LINUX.X64_213000_db_home.zip (64-bit) (3,109,225,519 bytes) (sha256sum - c05d5c32a72b9bf84ab6babb49aee99cbb403930406aabe3cf2f94f1d35e0916)21c xe版 安装包信息: 文件名:ora…