2_MYSQL_配置文件-socket连接-密码破解-SQL语言类型-字符集

1、父子进程

[root@master ~]# ps aux|grep mysql
root        920  0.0  0.0 115588  1808 ?        S    08:01   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/master.pid
mysql      1515  0.2  6.0 1746392 234924 ?      Sl   08:01   0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=master.err --open-files-limit=8192 --pid-file=/data/mysql/master.pid --socket=/data/mysql/mysql.sock --port=3306
root      15658  0.0  0.0 112664   972 pts/0    S+   08:20   0:00 grep --color=auto mysql
  • 父进程:mysqld_safe——管理mysqld,保证mysqld正常运行;
    mysqld_safe被杀死后,mysqld依然存在
    mysqld被杀死后,mysqld_safe会重启一个mysqld

  • 子进程:mysqld——工作进程, 真正对外提供服务;
    pstree -p 可以查看进程号

2、配置文件/etc/my.cnf

在这里插入图片描述

[mysqld_safe] # 指定mysqld_safe进程的配置
# 需要在mkdir /data/mysql  目录,然后使用命令chown  mysql:mysql  /data/mysql
# 因为mysql进程需要往/data/mysql目录里写东西,需要权限,不然不能往目录下写日志
[client] # 对客户端的配置
# socket是用来指定socket文件的路径,方便客户端连接找到
socket=/data/mysql/mysql.sock
[mysqld] # mysqld是服务器端的配置
# 指定mysql的日志文件的路径
log-error=/data/mysql/mysql.log
socket=/data/mysql/mysql.sock
port = 3309 #port 指定端口号
open_files_limit = 8192 # mysql参数调优
innodb_buffer_pool_size = 256M # mysql参数调优,innodb mysql存储引擎,负责mysql内存里面的数据存到磁盘,磁盘数据读到内存
character-set-server=utf8 # 指明mysql服务器的server字符集是utf8

#open_files_limit 指定mysql进程可以打开的文件数量,需要在操作系统里允许进程打开更多的文件
#使用ulimit -n 65535
#innodb_buffer_pool_size 指定缓存池的大小,提升数据性能的参数,最大可以达到物理内存的80%
#破解密码用
#user=mysql
#skip-grant-tables 指定mysqld的socket文件所在的路径,/data/mysql目录一定要先存在。
[mysql] # 对mysql命令执行的配置
auto-rehash
prompt=\\u@\\d \\R:\\m  mysql>
#auto-rehash  支持tab键补齐
#prompt 登录进去后的提示符 
root@(none) 08:35  mysql>show variables like '%innodb%'; # 以表格形式显示 
root@(none) 08:36  mysql>show variables ; # 查看MySQL里面的阿所有参数
root@(none) 08:37  mysql>show variables\G; # 以文本形式显示

3、socket连接

3.1 网络socket

socket是实现不同的电脑之间的不同的进程之间的通信的
网络socket是ip+port --》格式ip:port (192.168.0.163:3309)
网络中通过ip地址找到对方

[root@mysql-2 ~]# mysql  -h 192.168.0.163 -P3309  -ucali -p'Sanchuang1234#' 
-h 指定主机名(ip)  host
-P port 端口 (大写)
-p 密码

3.2 文件socket

是实现一台电脑里的不同进程之间通信的文件
在my.cnf主配置文件里打开下面的配置,在使用mysql客户端命令连接的时候,就不需要接-S指定socket文件的路径了

[client]
socket=/data/mysql/mysql.sock   # 指明在本机连接的时候默认/data/mysql/mysql.sock连接
# 客户端程序mysql连接过来的时候,访问的socket文件是/data/mysql/mysql.sock

# [client]和[mysqld]指定的socket要一样
# 不一样的时候只能通过命名指明
mysql -uroot -p'Sanchuang1234#' -S /var/lib/mysql/mysql.sock  # 指定访问的socket路径

4、密码破解

本质上是修改mysql库里的user表里的对应的用户的auth_string

超级用户

方法一:
停止mysql服务–》中断业务
只能在本地登录,修改/etc/my.cnf

[mysqld]
skip-grant-tables
# 用mysql -uroot -p 可以直接登录,越过授权表
sc@(none) 09:11  mysql>flush privileges; # 刷新权限(会加载原来没有加载的权限表)
Query OK, 0 rows affected (0.00 sec)
# 修改root用户密码
sc@(none) 09:11  mysql>alter user 'root'@'localhost'  identified by '123456';

最后还要还原配置文件,注释掉skip-grant-tables一行,登录数据库后刷新权限

方法二:
就是使用其他的管理员账号给别的用户重新设置密码
可以在SQLyog里操作

SET PASSWORD FOR 'root'@'localhost' = 'Sanchuang123#';
	alter user  'root'@'localhost'  identified by xxx;

其他的普通用户

MariaDB [(none)]> create user 'sc'@'%' identified by 'sc123456';       
 # 创建用户 用户名@从哪里远程登录(localhost 表示只允许本机登录、% 所有主机)   通过密码sc123456登录
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all on *.* to 'sc'@'%';
# 授予所有库.所有表的 所有权限给 sc用户  从任意主机登录过来 
Query OK, 0 rows affected (0.00 sec)

mysql库里面有个user表,存放用户名和密码相关信息。
sc用户拥有了所有全权限(除了grant),但是sc用户密码忘记了。

root@mysql 09:10  mysql>alter user 'sc'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
[root@master ~]# mysql -usc -p'123456' # 既可以登录

5、SQL语言类型

  • DDL:data definition language
    数据定义语言(建表、删表、修改表)
  • DML:Data Manipulation Language
    数据操纵语言(增删改表数据)
  • DCL:Data Control Language
    数据控制语言(GRANT授权、REVOKE取消权限)
  • DQL:Data Query Language
    数据查询语言(查表)

6、字符集

文本类型的数据会牵涉到字符集

root@(none) 01:14  mysql>create database hejin;  # 创建数据库
[root@localhost mysql]# cd hejin   # /data/mysql下面产生一个hejin的文件夹,一个数据库就是一个文件夹
[root@localhost hejin]# ls
db.opt         # 存放的是这个库的字符集校对规则(很多的字符集合)
[root@localhost hejin]# cat db.opt
default-character-set=utf8
default-collation=utf8_general_ci
root@(none) 01:31  mysql>show character set; # 查看mysql支持哪些字符集 
root@(none) 01:31  mysql>show variables like '%character%'; # 查看正在用的字符集
root@(none) 01:35  mysql>show create database hejin; # 查看当时的建库语句
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| hejin    | CREATE DATABASE `hejin` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
root@(none) 01:35  mysql>show create table  student;   # 查看当时的建表语句

字符集继承关系:服务器——》库——》表——》列
列继承表的字符集、表继承库的字符集、库继承服务器的字符集,所以在建库的时候一定要指明字符集

sc@(none) 09:27  mysql>create database hejin; # 建库默认字符集为 utf8,因为/etc/my.cnf里面指定了字符集
Query OK, 1 row affected (0.00 sec)
# 删库drop database hejin;
sc@(none) 10:26  mysql>show create database hejin;  
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| hejin    | CREATE DATABASE `hejin` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+----------------------------------------------------------------+
1 row in set (0.00 sec)

sc@(none) 10:30  mysql>show variables like '%character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个手刹不太灵儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值