初识MySQL

mariadb:
1、切换用户 su root;
2、查看是否已经安装完毕
rpm -qa | grep maridb
3、查看是否有安装源
yum list | grep mariadb
4、有 mariadb-server 就安装
yum install -y mariadb-server
如果无源就先根据整一份本地源
5、查看 mariadb 状态,查看mariadb是否已经启动
service mariadb status
6、启动 mariadb
service mariadb start
(启动成功:Active: active (running) since Fri 2020-08-07 02:16:18 PDT; 1min 20s ago)
停止mariadb
service mariadb stop
stop mariadb.service
7、
mysql数据库在启动的时候,会先启动一个守护进程
初识MySQL
守护进程在判断mysql服务器是否运行正常,如果mysql使用过程当中,服务器端挂掉了,守护进程就会重新拉起来mysql服务端。初识MySQL
8、cd /etc/my.cnf
在[mysql]标签下加上 skip-grant-tables ,目的是 跳过数据库权限验证
9、sql语句以分号结尾
eg: use mysql ;:进入一个数据库名为mysql
10、查看当前数据库的数据表
show tables ;
11、修改 mysql数据库中user表中的对应的密码
update user set password=11111 where user=‘root’ and host=‘localhost’;
12、登陆数据库之后,查看数据库版本:
select version() ;
13、客户端
mysql or mysql -u
14、域套接字解决本地socket问题
AF_UNIX
域套接字:本质上就是本地机器当中创建一个文件,客户端和服务端通过文件进行通信,也是进程之间进行通信,只是会走网络协议栈;
服务端:
1)创建socket:sockfd = socket(AF_UNIX,SOCK_STREAM, IPPROTO_TCP) ;
SOCK_STREAM:流式套接字,默认为TCP
2)bind :
struct sockaddr_su sun ;
sun.sun_family = AF_UNIX ;
sun.sun_path = “filename” ; // 此处指定本地文件名称
bind(sockfd,(struct sockaddr*)&sun,sizeof sun ) ;
listen
accept
客户端:
1)创建套接字
socket:sockfd = socket(AF_UNIX,SOCK_STREAM, IPPROTO_TCP) ;
2)connect : 组织服务的地址信息结构
struct sockaddr_su sun ;
sun.sun_family = AF_UNIX ;
sun.sun_path = “filename” ; // 此处指定本地文件名称
connect(sockfd,(struct sockaddr*)&su,sizeof su ) ;

总:以上通过文件进行通信,但是要经过网络协议栈;
本地域套接字不用端口;和进程之间的共享内存类似;
15、查看mysql服务端的进程
ps aux | grep mysqld
pstack [进程号] : 查看有多少个线程

16、mysql数据库–>数据库管理软件,管理若干个数据库:
每个数据库中存在若干个表;
数据库:文件夹;
数据库表:文件;

17、查看当前有多少数据库
show databases ;
查看当前数据库中的数据表:
show tables ;
注意:mysql本身创建的数据库不可随意改变;

18、创建数据库
create database dbname ;
eg:create database test1 ;

19、查询数据库的创建语句:
show create database dbname ;
show create database test1 ;

20、字符集
ASCII字符集(一个字节):采用的是一个字节的低7位表示字符,高位始终为0 ;
LATINI字符集(1个字节):相对于ASCII码字符集做了一个扩展,启用了最高位;
GBK字符集(1字节、2字节):支持中文的,字符可以使用一个字节,也可以使用两个字节;
UTF8字符集:Unicode字符集,可以表示很多语言,支持了所有国家的文字字符,采用的是1-4字节;
注意:自上而下,表示的字符范围是越来越广,一般选择UTF-8作为默认字符集,由于其表示的字符更加广发;
初识MySQL

21、创建数据库的时候,需要指定字符集
create database dbname charser=utf8

22、show variables like ‘%character%’ ;
MariaDB [test1]> show variables like ‘%character%’ ;
±-------------------------±---------------------------+
| Variable_name | Value |
±-------------------------±---------------------------+
// mysql 客户端的字符集
| character_set_client | utf8 |
// 连接层字符集
| character_set_connection | utf8 |
// 数据库缺省字符集
| character_set_database | latin1 |
| character_set_filesystem | binary
// 查寻结果字符集|
| character_set_results | utf8 |
// mysql内部操作字符集
| character_set_server | latin1 |
// mysql字段名称所用到的字符集
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
±-------------------------±---------------------------+

23、删除数据库
drop database dbname ;
删除数据之后,整个库中的表全部都被删除;

24、
mysql连接层:
1、用户验证;
2、连接协议的确定
TCP or 本地域套接字
3、创建线程对客户端进行服务

server层:
1、检查SQL语句的语法-SQL语句的语法是否规范;
2、语义分析;
3、权限检查,查看当前的用户是否有操作该表的权限;
4、分析SQL语句的查找方案,选出一个执行效率最高的方案;
5、执行SQL;