zl程序教程

您现在的位置是:首页 >  IT要闻

当前栏目

MYSQL数据库基础一

2023-02-18 16:34:36 时间

MySQL基础

MYSQL发展历史:
  1. 1996年发布mysql1.0,命令来自他的大女儿名字的缩写。

  2. 2008年Mysql被sun公司收购,

  3. 2009年Oracle收购sun,因为Oracle有自己家的数据库,所以MySQL随时都有闭源的可能。

  4. 所以Mysql的创始人将MySQL进行分支化,使用了自己小女儿的名字作为数据库名字,叫做MariaDB。

  5. MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品

MYSQL的三大分支:
  • MySQL

  • mariadb

  • percona Server

官方网址:
官方文档:
版本演变:
  • MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 -->8.0

  • MariaDB:5.1 -->5.5 -->10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5

安装MySQL:

CentOS可以通过rpm包的形式安装也可以通过配置mysql的yum源或者官网下载安装包来进行安装。

RPM包
  • CentOS8:光盘里面提供了Mysql8.0和mariadb-server : 10.3.17的rpm包

  • CentOS7:因为当时可能担心MySQL闭源,所以7的光盘文件上面没有mysql,引入mariadb-server:5.5

  • CentOS6:自带MySql5.1的rpm包

yum源地址:

Mysql服务端使用的端口号:3306

tee命令:

tee命令:把标准输入的内容写入到指定的文件中并输出到屏幕上。

# 格式:
tee 文件名 <<EOF

因为旧版本mysql在初始化的状态很不安全,基于安全考虑使用mysql的脚本进行安全加固。
运行脚本:mysql_secure_installation --- 安装mysql的时候就提供了这个加固脚本。

优化内容:

设置数据库管理员root口令

禁止root远程登录

删除anonymous用户帐号

删除test数据库
Mysql的组成和相关工具:
客户端工具:
  • mysql: 交互式或非交互式的CLI(命令行)工具

  • mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中

  • mysqladmin:基于mysql协议管理mysqld

  • mysqlimport:数据导入工具

  • MyISAM存储引擎的管理工具:

  • myisamchk:检查MyISAM库

  • myisampack:打包MyISAM表,只读

服务器端程序:
  • mysqld_safe -- 例如mysql5.5的版本就是mysql——safe

  • mysqld -- 例如mysql8.0的主程序就是mysqld

  • mysqld_multi 多实例 ,示例:mysqld_multi --example

Mysql数据库账号的组成:

Mysql数据库的账号由两部分组成,用户名和主机名。'USERNAME'@'HOST'

注意:HOST限制此用户可通过哪些远程主机连接mysql服务器
注意:数据库账号的host部分需要使用单引号括起来,前面的用户名可以省略单引号。

HOST有两种格式:
  • 具体的ip地址:tom@'192.168.2.1'

  • 一个网段:tom@'192.168.%.%'

Mysql数据库支持通配符:

% 匹配任意长度的任意字符,相当于shell中*

_ 匹配任意单个字符,相当于shell中?
mysql数据库的客户端:mysql工具
  • Mysql的客户端工具: 用于访问mysql数据库
注意:
  • 使用mysql客户端工具访问mysql数据库,默认需要进行身份的验证。因为刚装好,所以用空口令也能连接到mysql数据库。

  • mysql客户端工具不但能连接本机的mysql数据库,也能远程连接到其他的mysql数据库。

  • Mysql的5.7.0版本在安装还以后会生成一个随机的用户口令,默认需要使用这个口令才能访问到mysql数据库。

  • mysql自己的专有账号root,默认使用的账号就是root账号。

#安装好MySQL以后,随机口令存放在mysql的日志文件中。

[root@centos7 ~]#grep password /var/log/mysqld.log

#使用这个临时口令登录mysql服务器之后,需要修改密码才能对mysql数据库进行管理。
mysql 客户端命令:

mysql的客户端命令是mysql客户端自带的,只是在本地执行,和mysql数据库没关系。要使用mysql客户端的命令就需要提前登录mysql数据库。

    格式:mysql [OPTIONS] [database]

Mysql服务端命令:

通过mysql协议把这些指定发送给mysql数据库服务端,执行并取回结果,命令末尾都必须使用命令结束符号,默认为分号

注意:mysql是多线程的。

查看一个应用是多线程还是单线程:
  • 方法一:pstree命令,后面有一堆花括号就是多线程

  • 方法二:cat /proc/pid/status --->Threds xx

mysql客户端的使用格式:
  • 交互式:使用mysql客户端工具连接到mysql服务端以后进行交互式操作

  • 脚本式:通过将提前写好的脚本传给mysql客户端,mysql客户端传给mysql服务端进行执行。

脚本式的格式:
  • 方法一:mysql -u用户名 -p命令 <sql脚本

  • 方法二:使用mysql客户端的命令source。mysql>source   /path/from/somefile.sql

Mysql客户端的常用选项:
  • -A, --no-auto-rehash 禁止补全

  • -u, --user= 用户名,默认为root

  • -h, --host= 服务器主机,默认为localhost

  • -p, --passowrd= 用户密码,建议使用-p,默认为空密码

  • -P, --port= 服务器端口

  • -S, --socket= 指定连接socket文件路径

  • -D, --database= 指定默认数据库

  • -C, --compress 启用压缩

  • -e   "SQL" 执行SQL命令

  • -V, --version 显示版本

  • -v  --verbose 显示详细信息

  • --print-defaults 获取程序默认使用的配置

Mysql客户端的命令:
?         (\?) 显示帮助信息
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) 退出mysql
rehash    (\#) Rebuild completion hash.
source    (\.) 调用系统中的sql脚本
status    (\s) Get status information from the server.
system    (\!) 调用系统中的命令
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) 指定需要使用的数据库
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
mysqladmin工具

可以用来探测数据库是否活跃

[root@CentOS8 ~]# mysqladmin  -uroot -p'' ping
Enter password:
mysqld is alive 

修改root密码:

mysqladmin -uroot -pcentos password 'magedu'