一.MySQL基础

MySQL基础

一.简介

1.时间线

`1979年:TcX公司 Monty Widenius,Unireg

1996年:发布MySQL1.0,Solaris版本,Linux版本

1999年:MySQL AB公司,瑞典

2003年:MySQL 5.0版本,提供视图、存储过程等功能

2008年:Sun公司 以10亿美元收购MySQL

2009年:Oracle公司以 74 亿美元收购 sun 公司

2009年:Monty成立MariaDB`

2.MySQL的三大主要分支

  • mysql

  • mariadb

  • percona Server

3.版本演变

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被Sun收购后,搞了个过渡的6.0版本,没多久就下线了,后来被Oracle收购后,终于迎来了像样的

5.6版本,之后就是5.7、8.0版本。由于6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新

版本号从8.0开始。

4. MySQL的特性

  • 开源免费

  • 插件式存储引擎:也称为"表类型",存储管理器有多种实现版本,功能和特性可能均略有差别;用

​ 户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MYSQL默认引擎

MyISAM ==> Aria

InnoDB ==> XtraDB

  • 单进程,多线程

  • 诸多扩展和新特性

  • 提供了较多测试组件

二.MySQL 组成和常用工具

1. 客户端程序

  • mysql: 交互式或非交互式的CLI工具

  • mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成

  • insert等写操作语句保存文本文件中

  • mysqladmin:基于mysql协议管理mysqld

  • mysqlimport:数据导入工具

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

  • myisamchk:检查MyISAM库

  • myisampack:打包MyISAM表,只读

2.服务器端程序

  • mysqld_safe

  • mysqld

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

3.用户账号

mysql用户账号由两部分组成:

'USERNAME'@'HOST'

说明:

HOST限制此用户可通过哪些远程主机连接mysql服务器

支持使用通配符:

% 匹配任意长度的任意字符,相当于shell中*, 示例: 172.16.0.0/255.255.0.0 或 172.16.%.%

_ 匹配任意单个字符,相当于shell中?

三.mysql 客户端命令

1.mysql 运行命令类型

  • 客户端命令:本地执行,每个命令都完整形式和简写格式

mysql> \h, help

mysql> \u,use

mysql> \s,status

mysql> !,system

  • 服务端命令:通过mysql协议发往服务器执行并取回结果,命令末尾都必须使用命令结束符号,默

​ 认为分号

#示例:

mysql>SELECT VERSION();

2.mysql 使用模式

  • 交互模式

  • 脚本模式:

    mysql -uUSERNAME -pPASSWORD < /path/somefile.sql

    cat /path/somefile.sql | mysql -uUSERNAME -pPASSWORD

    mysql>source /path/from/somefile.sql

3. mysql命令使用格式

mysql [OPTIONS] [database]

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 -uroot -p

运行mysql命令:

mysql>use mysql

mysql>select user(); #查看当前用户

mysql>SELECT User,Host,Password FROM user;

范例:mysql的配置文件,修改提示符

#查看mysql版本

[root@centos8 ~]#mysql -V

mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1

#临时修改mysql提示符

[root@centos8 ~]#mysql -uroot -pcentos --prompt="\r:\m:\s(\u@\h) [\d]>\_"

#临时修改mysql提示符

[root@centos8 ~]#export MYSQL_PS1="\r:\m:\s(\u@\h) [\d]>\_"

#持久修改mysql提示符

[root@centos8 ~]#vim /etc/my.cnf.d/mysql-clients.cnf

[mysql]

prompt="\r:\m:\s(\u@\h) [\d]>\_"

[root@centos8 ~]#mysql --print-defaults -v

mysql would have been started with the following arguments:

--prompt=\r:\m:\s(\u@\h) [\d]>_ -v

[root@centos8 ~]#mysql

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 11

Server version: 10.3.11-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

10:29:30(root@localhost) [(none)]> use mysql

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

10:29:34(root@localhost) [mysql]> exit

范例:配置所有MySQL 客户端的自动登录

vim /etc/my.cnf.d/client.conf

[client]

user=wang

password=centos

[mysql]

prompt=(\u@\h) [\d]>\_

4.mysqladmin命令

mysqladmin 命令格式

mysqladmin [OPTIONS] command command....

范例:

#查看mysql服务是否正常,如果正常提示mysqld is alive

mysqladmin -uroot -pcentos ping

#关闭mysql服务,但mysqladmin命令无法开启

mysqladmin -uroot -pcentos shutdown

#创建数据库testdb

mysqladmin -uroot -pcentos create testdb

#删除数据库testdb

mysqladmin -uroot -pcentos drop testdb

#修改root密码

mysqladmin -uroot -pcentos password '123456'

#日志滚动,生成新文件/var/lib/mysql/mariadb-bin.00000N

mysqladmin -uroot -pcentos flush-logs

5. mycli

MyCLI 是 MySQL,MariaDB 和 Percona 的命令行界面,具有自动完成和语法突出显示功能

安装

#CentOS8安装

[root@centos8 ~]#yum install python3-pip

[root@centos8 ~]#pip3 install mycli

#ubuntu安装

[root@ubuntu1804 ~]#apt -y install mycli

使用

四. 服务器端配置

1.服务器端配置文件

服务器端(mysqld):工作特性有多种配置方式

1、命令行选项:

2、配置文件:类ini格式,集中式的配置,能够为mysql的各应用程序提供配置信息

服务器端配置文件:

/etc/my.cnf #Global选项

/etc/mysql/my.cnf #Global选项

~/.my.cnf #User-specific 选项

配置文件格式:

[mysqld]

[mysqld_safe]

[mysqld_multi]

[mysql]

[mysqldump]

[server]

[client]

格式:

parameter = value

说明:

_和- 相同

1,ON,TRUE意义相同, 0,OFF,FALSE意义相同,无区分大小写

2.socket 连接说明

官方说明

https://dev.mysql.com/doc/mysql-port-reference/en/mysql-ports-reference-tables.html#mysql-client-server-ports

服务器监听的两种 socket 地址:

  • ip socket: 监听在tcp的3306端口,支持远程通信 ,侦听3306/tcp端口可以在绑定有一个或全部接口IP上

  • unix sock: 监听在sock文件上,仅支持本机通信, 如:/var/lib/mysql/mysql.sock)

​ 说明:host为localhost 时自动使用unix sock

范例: MySQL的端口

mysql> SHOW VARIABLES LIKE 'port';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| port | 3306 |

+---------------+-------+

1 row in set (0.01 sec)

#MySQL8.0增加了一个33060/tcp端口

#Port 33060 is the default port for the MySQL Database Extended Interface (the

MySQL X Protocol).

mysql> SHOW VARIABLES LIKE 'mysqlx_port';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| mysqlx_port | 33060 |

+---------------+-------+

1 row in set (0.00 sec)

3.关闭mysqld网络连接

只侦听本地客户端, 所有客户端和服务器的交互都通过一个socket文件实现,socket的配置存放

在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改

范例:

vim /etc/my.cnf

[mysqld]

skip-networking=1

bind_address=127.0.0.1

posted on 2021-06-03 20:27  求墨  阅读(77)  评论(0编辑  收藏  举报