【02 - MySQL数据库服务基础管理】

一、数据库服务用户管理

在数据库服务中,也是有用户知识概念的,类似系统中的用户管理应用,主要利用用户管理知识,可以实现:
  - 用户登录数据库服务系统中(实现数据库服务登录)
  - 用户管理数据库服务中对象(实现数据库对象管理)

1、创建数据库服务用户信息

创建用户格式:'用户名称信息'@'白名单信息'
  用户名称:  创建用户名字
  白名单信息:主机域信息
  本地-localhost/127.0.0.1
  -- 只允许本地连接登录数据库
  网段-10.0.0.0/24  10.%  172.16.%  192.168.10.% 10.0.0.5%
  -- 允许某个网段中的多个主机,均可远程登录
  地址-192.168.10.13 
  -- 允许某个主机可以远程登录
  域名-www.baidu
  -- 允许某个主机可以远程登录(域名解析)
  -- 允许远程登录数据库

常见的有两种方式:
第一种方式:以本地登录方式进行登录数据库系统;
第二种方式:以远程登录方式进行登录数据库系统;
   

create user 用户名@'白名单' identified by '密码';
create user fxx@'10.0.0.%' identified by 'fxx123';
create user fxx@'localhost' identified by 'fxx123';
# 创建用户 fxx 准许登陆网段为10.0.0.% 密码为fxx123;

故障案例:解决数据库加密问题
解决数据库加密问题:客户端 -- 服务端 
  当服务端的MySQL版本是8.0的时候,如果需要远程连接登录数据库的时候,而本地的MySQL版本是5.6,登录之后发现登录不上去
  方法一:升级客户端 客户端加密方式升级
  方法二:降级服务端 服务端加密方式降级
查看8.0数据库 密码加密方式
mysql> show variables like '%auth%'; 
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.01 sec)

之前默认加密方式:mysql_native_password
目前最新加密方式:caching_sha2_password
   
降级方式一:
  create user fxx@'10.0.0.%' identified with mysql_native_password by 'fxx123';
降级方式二:
  alter user fxx@'10.0.0.%' identified with mysql_native_password by 'fxx123';
降级方式三:全局修改
   # vim /etc/my.cnf
   [mysqld]
   default_authentication_plugin=mysql_native_password
   重启数据库服务,使配置生效
   检查确认
   mysql> show variables like '%auth%';
   +-------------------------------+-----------------------+
   | Variable_name                 | Value                 |
   +-------------------------------+-----------------------+
   | default_authentication_plugin | mysql_native_password |
   +-------------------------------+-----------------------+
查看数据库用户密码信息:
   select user,host,authentication_string,plugin from mysql.user;

2、查询数据库服务用户信息

查看所有用户信息
select user,host,authentication_string from mysql.user;
 
查看当前登录系统的用户信息
select user();

3、修改数据库服务用户密码

alter user 用户名@'白名单' identified by '新密码';
alter user fxx@'10.0.0.%' identified by 'fxx123';

4、删除数据库服务用户信息

drop user '用户名'@'白名单';
drop user 'fxx'@'10.0.0.%';

5、锁定数据库服务用户信息

在数据库服务进行用户管理时,也可以将特定数据库管理用户进行锁定,从而实现禁止某些特定用户再次登录数据库服务进行管理;

# 进行数据库用户锁定操作
alter user fxx@'localhost' account lock;
alter user 用户名@'白名单' account lock;

# 锁定用户和解锁用户
alter user fxx@'10.0.0.%' account lock;  	锁定 
alter user fxx@'10.0.0.%' account unlock;	解锁

# 查看数据库用户锁定状态
select user,host,account_locked from mysql.user;

6、MySQL5.7与8.0用户管理区别

区别1:创建用户授权区别
MySQL8.0之前版本,只需要grant命令即可完成用户创建操作+用户密码设置+用户授权操作
# 创建用户并授予所有权限
grant all on *.* to fxx@'10.0.0.%' identified by 'fxx123';

MySQL8.0之后版本,所有系统表都是InnoDB管理,需要先建立用户再进行授权,并且grant命令不再支持indentified by语句
# 创建用户
create user fxx@'10.0.0.%' identified by 'fxx123';
# 授予用户所有权限
grant all on *.* to fxx@'10.0.0.%';
区别2:用户密码插件区别
MySQL8.0之前版本,用户密码加密插件使用的早期版本时,可以保证客户端程序正常登陆,保证主从架构数据正常,保证集群通讯不受到影响;

# 查看早期数据库服务版本的密码加密插件信息
mysql> show variables like '%auth%';
+-------------------------------+-------------------------------------------+
| Variable_name                             | Value                                 |
+-------------------------------+-------------------------------------------+
| default_authentication_plugin | mysql_native_password |
| secure_auth                                 | ON                                     |
+-------------------------------+-------------------------------------------+
2 rows in set (0.00 sec)

-- 早期数据库服务的密码加密插件为:mysql_native_password

MySQL8.0之后版本,用户密码加密插件使用的后期版本时,将会导致客户端程序无法登录,导致主从架构数据正常,影响集群正常通讯过程;

# 查看后期数据库服务版本的密码加密插件信息
mysql> show variables like '%auth%';
+-------------------------------+----------------------------------------+
| Variable_name                            | Value                                  |
+-------------------------------+----------------------------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+----------------------------------------+
1 row in set (0.01 sec)
-- 后期数据库服务的密码加密插件为:caching_sha2_password


为了解决数据库服务升级后,用户密码加密插件影响连接建立问题,可以采取以下两种方案
  方案一:替换原有默认密码加密插件,更换为历史版本使用的加密插件(mysql_native_passwordl)
  方案二:替换客户端连接数据库服务端的驱动程序软件,使之兼容新版本加密插件功能 

在新版数据库中替换原有密码加密插件具体操作方法:
方法一:创建用户过程修改加密插件信息
create user fxx@'localhost' identified with mysql_native_password by 'fxx123';

方法二:修改已经创建用户加密插件信息
alter user fxx@'localhost' identified with mysql_native_password by 'fxx123';

方法三:修改数据库服务配置文件信息(全局修改)
   # vim /etc/my.cnf
   [mysqld]
   default_authentication_plugin=mysql_native_password
   重启数据库服务,使配置生效
   检查确认
   mysql> show variables like '%auth%';
   +-------------------------------+-----------------------+
   | Variable_name                 | Value                 |
   +-------------------------------+-----------------------+
   | default_authentication_plugin | mysql_native_password |
   +-------------------------------+-----------------------+

二、数据库服务权限管理

在数据库服务中,权限管理可以用于针对不同的用户,限制登录管理数据库服务用户的操作行为,也可以区分不同用户的操作能力;

1、查看权限

数据库服务中可以授权的所有权限信息查看:
MySQL> show privileges;

image-20230623105446091

输出展示的信息表示内容:

输出列解释说明
Privilege表示可以授权的所有权限信息展示
Context表示设置的权限可以对数据库服务哪些资源进行操作
Comment对相应的权限功能进行简单解释说明

核心重要授权权限总结

权限授权资源解释说明
SelectTables可以对表进行操作,查询表中数据信息
InsertTables可以对表进行操作,插入表中数据信息
UpdateTables可以对表进行操作,修改表中数据信息
DeleteTables可以对表进行操作,删除表中数据信息
AlterTables可以对表进行操作,修改表中结构信息(元数据-属性)
IndexTables可以对表进行操作,删除或创建表中的索引信息
CreateDatabases,Tables可以对表和库进行操作,用于创建数据库和表信息
DropDatabases,Tables可以对表和库进行操作,用于删除数据库和表信息
提示:
1.赋予用户所有权限,all=all privileges表示所有权限,但一个权限不会赋予Grant_priv
To give to other users those privileges you possess  不允许给其他用户授权

2.当创建出一个用户时,如果没有授权,也会有一个默认权限
mysql> create user fxx@'10.0.0.%' identified by 'fxx123';
Query OK, 0 rows affected (0.02 sec)

mysql> show grants for fxx@'10.0.0.%';
+----------------------------------------+
| Grants for fxx@10.0.0.%                |
+----------------------------------------+
| GRANT USAGE ON *.* TO `fxx`@`10.0.0.%` |
+----------------------------------------+
1 row in set (0.00 sec)

USAGE:No privileges - allow connect only  -- 创建用户之后,默认权限只允许用户登录数据库

2、授予权限

# 授权语法格式
MySQL> grant  all    on     授权对象范围   to        权限赋予用户信息

MySQL> grant  all    on    *       .      *       to     blog@'192.168.30.%';
              授权   权限         库信息     表信息         用户       主机域
MySQL> grant all on *.* to fxx@'10.0.0.%';

# 对数据库和表同时进行授权方法
MySQL> grant  all  on   *.*
-- 表示对所有的数据库和所有的表进行授权(all 所有权限)
MySQL> grant  all  on   fxx.*
-- 表示对指定的数据库(fxx)中所有的表进行授权
MySQL> grant  all  on   fxx.t1
-- 表示对指定的数据库(fxx)中指定的表(t1)进行授权

MySQL> grant  Insert,Delete,Update,Select  on  fxx.t1  to fxx@'10.0.0.%';
-- 表示对指定的数据库(fxx)中指定的表(t1)授予Insert(插入),Delete(删除),Update(修改),Select(查询)的权限

企业生产情况授权思路:

企业生产库表授权一定要更小,最小的授权最大的安全,给业务用户常规授权,包含对内容的增删改查;

序号权限互联网应用
01SELECT 查询数据访问网站页面时,表示浏览查看数据信息;
02INSERT 插入数据访问网站页面时,表示发表文章数据信息;
03UPDATE 修改数据访问网站页面时。表示修改文章数据信息;
04DELETE 删除数据访问网站页面时,表示删除文章数据信息;

3、回收权限

# 查看用户权限
mysql> show grants for fxx@'10.0.0.%';
# 回收用户权限
mysql> revoke all on *.* from fxx@'10.0.0.%';
       回收  所有权限  所有库.表 用户

mysql> revoke all on *.* from fxx@'10.0.0.%';
Query OK, 0 rows affected (0.00 sec)

mysql> show grants for fxx@'10.0.0.%';
+----------------------------------------+
| Grants for fxx@10.0.0.%                |
+----------------------------------------+
| GRANT USAGE ON *.* TO `fxx`@`10.0.0.%` |
+----------------------------------------+
1 row in set (0.00 sec)

4、数据库服务授权表介绍

授权表名称解释说明
user主要用于存储用户、主机域、密码、加密插件等信息,同时还存储了*.*级别的权限(全局权限)
db主要用于存储用户、主机域等信息,同时还存储了单库级别的权限(局部权限) 用户对库的权限
tables_priv主要用于存储用户、主机域等信息,同时还存储了单表级别的权限(局部权限) 用户对表的权限

5、MySQL5.7与8.0权限管理区别

MySQL8.0之后版本,出现了数据库服务中对用户的role支持,表示可以将企业中常用的权限汇总打包为一个特定的role信息,在赋予给指定用户;

具体操作演示过程:

知识点补充:
  MySQL8.0版本新的权限管理功能 
  权限角色管理 == 将相同权限的用户整合为一个组 == 系统用户组
  
  MySQL8.0之前的版本,在设置权限信息时,是能针对用户设置权限
   
   fxx数据库  fxx01-增删改查.其他管理权限 fxx02-增删改查.其他管理权限 fxx03-增删改查.其他管理权限
   
   
# 指定用户操作特定数据库时,具有共性相同的权限:分为运维权限(rw) 分为开发权限(ro)
查看role创建的方法
mysql>help create role;

1.创建指定的role角色信息
mysql> CREATE ROLE 'admin', 'developer';
mysql> CREATE ROLE 'webapp'@'localhost';
-- 创建role信息的语句结构信息,不加@信息表示角色白名单为%方式,实际还要根据具体用户定义

2.创建管理数据库信息
mysql> create database fxxdb;

3.创建两个不同的role信息
mysql> create role fxx_rw,fxx_r;
# fxx_rw:   fxx.* rw(select,update,insert,delete)    
# fxx_r:    fxx.* r(select)  

4.进行role权限信息设定
mysql> grant select on fxxdb.* to fxx_r;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select,update,insert,delete on fxxdb.* to fxx_rw;
Query OK, 0 rows affected (0.00 sec)

5.将指定role信息与相应的用户信息进行捆绑
6.创建需要捆绑role权限的用户信息
mysql> create user user01@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

mysql> create user user02@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

7.实现不同的role信息与不同的用户进行捆绑
mysql> grant fxx_r to user01@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> grant fxx_rw to user02@'%';
Query OK, 0 rows affected (0.00 sec)


进行角色信息激活
方式一:手动激活角色
mysql> set default role all to user01@'%';
mysql> set default role all to user02@'%';
-- 利用数据库管理员账号手工激活角色

mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `fxx_r`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user01登录数据库,会显示对应激活的角色信息


mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `fxx_rw`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user02登录数据库,会显示对应激活的角色信息

方式二:实现自动激活用户角色信息
mysql > set global activate_all_roles_on_login=on;

[root@db-01 ~]# mysql -uuser01 -p123 -h10.0.0.51
mysql> select current_role();
+----------------+
| current_role() |
+----------------+
| `fxx_r`@`%` |
+----------------+
1 row in set (0.00 sec)
-- user01登录数据库,会显示对应激活的角色信息

[root@db-01 ~]# mysql -uuser02 -p123 -h10.0.0.51
mysql> select current_role();
+-----------------+
| current_role()  |
+-----------------+
| `fxx_rw`@`%` |
+-----------------+
1 row in set (0.01 sec)
-- user02登录数据库,会显示对应激活的角色信息

进行用户操作验证
mysql> select * from fxxdb.t1;
+----------+
| name     |
+----------+
| zhangsan |
| lisi     |
+----------+
2 rows in set (0.04 sec)
mysql> insert into fxxdb.t1 values ('fxx002');
ERROR 1142 (42000): INSERT command denied to user 'user01'@'10.0.0.51' for table 't1'
-- user01只读用户登录数据库,只能查看操作,不能进行其他操作

mysql> select * from fxxdb.t1;
+--------+
| name   |
+--------+
| zhang  |
| lisi   |
+--------+
2 rows in set (0.00 sec)
mysql> insert into fxxdb.t1 values ('fxx002');
-- user02读写用户登录数据库,可以进行其他操作任务

三、重置数据库管理员密码

解决处理方法:将数据库重启并进入数据库安全模式(不加载验证授权表模式)

1.停止数据库服务,并检查数据库服务是否停止:
mysql> shutdown;
或者
systemctl stop mysqld.service

2.重新启动数据库服务,并设置启动方式为忽略授权表启动方式
[root@db01 ~]# mysqld_safe  --skip-grant-tables --skip-networking &
-- skip-grant-tables 表示忽略授权表启动   
-- skip-networking 忽略网络通讯方式启动

# 进行测试服务是否启动
[root@db01 ~]# ps -ef|grep mysql

3.采用免密码方式登录数据库系统中,并重置root用户密码信息
[root@db01 ~]# mysql -uroot
mysql> flush privileges;   
--表示先将数据库服务授权表加载到内存中,也可以将内存中修改的授权信息存入到磁盘中

mysql> alter user root@'localhost' identified by 'fxx123';
--修改数据库服务用户密码信息

4.重新启动数据库服务程序
# 杀死已经运行的数据库服务进程信息
[root@db01 ~]# pkill mysqld
[root@db01 ~]# ps -ef|grep mysql

# 重新启动数据库服务
[root@db01 ~]# systemctl start mysqld
[root@db01 ~]# netstat -lntup|grep 3306

# 重新登录进行测试
[root@db01 ~]# mysql -uroot -pfxx123

四、数据库服务连接管理

当数据服务中用户创建设置完毕后,就可以实现利用指定用户身份连接登录管理数据服务,具体连接操作如下:

本地连接数据库服务:
mysql -uroot -pfxx123 

mysql -uroot -pfxx123 -hlocalhost -P3306 -S /tmp/mysql.sock
--- 此命令为第一条命令的长格式;进行本地连接时,hlocalhost -P3306 -S /var/lib/mysql/mysql.sock可以省略

本地连接:unix 套接字  配置文件中:socket=/tmp/mysql.sock
     PS:利用套接字文件,可以实现在一个系统中,不同的程序可以建立连接

远程连接数据库服务:
mysql -uroot -pfxx23 -h10.0.0.51 -P3306 -S /tmp/mysql.sock

远程连接:socket(网络开发) --> TCP/IP --> IP地址 端口信息

1、数据库连接管理方法

1.利用数据库自带的客户端命令实现连接
  本地连接:mysql -uroot -p123 -S /tmp/mysql.socket  
  远程连接:mysql -uroot -p123 -h10.0.0.51 -P3306	

2.利用第三方数据库管理工具实现连接
  远程连接:可以使用的远程工具 (sqlyog-收费 navicat-收费 workbench(MySQL官方) dbeaver-免费 )   
	  
3.利用开发程序接口或函数,以及驱动程序包连接数据 

2、数据库服务连接方式特殊说明

方式一:socket建立远程连接

利用socket建立远程连接(unix 套接字文件连接)利用此方法建立数据库服务的连接,只能用于建立本地数据库服务的连接;

# 套接字文件信息定义:
[root@db01 ~]# cat /etc/my.cnf 
[mysql]
socket=/tmp/mysql.sock
# 指定数据库服务加载的套接字文件路径信息
[mysqld]
socket=/tmp/mysql.sock
# 指定数据库服务加载的套接字文件路径信息

# 利用套接字文件建立数据库服务连接
[root@db01 ~]# mysql -uroot -pfxx123 -S /tmp/mysql.sock
  -S指定socket的信息可以省略,因为在数据库服务配置文件的客户端已经配置过了

说明:需要在数据库服务中授权localhost用户,才能实现采用socket方式登录操控数据库服务
方式二:TCP/IP建立远程连接

利用TCP/IP建立远程连接(网络地址与端口)利用此方法建立数据库服务的连接,可以用于建立远程数据库服务的连接;

# 利用TCP/IP建立数据库服务连接
 mysql -uroot -fxx123 -h 10.0.0.51 -P3306 -S /var/lib/mysql/mysql.sock
方法三:软件终端操作连接登录数据库服务

打开DBeaver

image-20230623143336392

新建数据库连接

image-20230623143441380

选择对应的数据库版本

image-20230623143517005

输入服务器地址和密码

image-20230623143558079

五、数据库服务初始配置

数据库服务的初始化配置操作的目的,主要是在某些场景下,想让数据库服务程序启动后,具备一些定制化的功能应用;

1、方式一:源码安装数据库服务

一、数据库服务源码安装准备阶段:

1. 下载数据库服务软件程序(源码程序)
# 下载链接地址:https://dev.mysql.com/downloads/mysql/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.12.tar.gz
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.0.12.tar.gz

2. 处理数据库服务软件依赖
yum -y install wget cmake gcc gcc-c++ ncurses ncurses-devel libaio-devel openssl openssl-devel

3. 解压数据库服务软件程序
tar xf mysql-8.0.12.tar.gz
tar zxf mysql-boost-8.0.12.tar.gz -C /usr/local/

二、数据库服务源码安装环境创建:

1. 创建数据库服务管理用户
useradd mysql -s /sbin/nologin

2. 创建数据库服务所需目录
mkdir -p /usr/local/mysql8.0   # 数据库服务程序数据存储目录
mkdir -p /data/mysql8.0/log    # 数据库服务日志存储目录
chown -R mysql:mysql /data/mysql8.0/
chown -R mysql:mysql /usr/local/mysql8.0


三、数据库服务源码编译安装过程:

1. 数据库服务编译安装配置过程(初始化过程)
cd /usr/local/src/mysql-8.0.12
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql8.0 -DMYSQL_DATADIR=/usr/local/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/mysql-8.0.12/ -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 -DENABLE_DTRACE=0 -DENABLED_LOCAL_INFILE=1 -DDEFAULT_CHARSET=utf8mb4

2. 数据库服务编译安装部署
make && make install 

2、方式二:修改数据库配置文件

cat >/etc/my.cnf<<'EOF'
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

[mysql]
prompt="MySQL [d]> "
no-auto-rehash

[mysqld]
port = 3306
socket = /tmp/mysql.sock
default_authentication_plugin = mysql_native_password
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
server-id = 1

init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci

skip-name-resolve
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 500M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
binlog_expire_logs_seconds = 604800
log_error = /usr/local/mysql/data/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /usr/local/mysql/data/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp
skip-external-locking
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

interactive_timeout = 28800
wait_timeout = 28800

[mysqldump]
quick
max_allowed_packet = 500M

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
EOF

#初始化mysql
cd /usr/local/mysql

mkdir data
chown -R mysql.mysql ./*
chown root.mysql /usr/local/mysql
bin/mysqld --initialize-insecure --user=mysql

#配置MySQL8 的密码

mysql -u root -p
Enter password:

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
报这个错,意思是少了这个插件
需要mysql8自己的客户端才能连接,所以用全路径连接mysql8
/usr/local/mysql/bin/mysql -u root -p
配置文件信息结构说明
序号配置部分配置信息说明
01带有[]部分表示配置标签部分,用于区分不同程序运行的参数,包含服务器端和客户端标签信息
[服务端标签]负责数据库服务端运行参数信息设定
[客户端标签]影响客户端与服务连接参数信息设定(只影响本地客户端连接,不影响远程客户端连接)
02不带[]部分表示配置参数部分
配置文件信息内容说明
序号配置信息解释说明
[mysqld]服务端配置标签
01user=mysql表示数据库服务管理用户信息
02basedir=/usr/local/mysql表示数据库服务程序安装路径
03datadir=/data/3306/data表示数据库服务数据存储路径
04server_id=6表述数据库服务标识节点编号(主从复制的唯一编号)
05port=3306表示数据库服务启动端口设定
06socket=/tmp/mysql.sock表示数据库服务本地连接文件(套接字文件)
07default_authentication_plugin=mysql_native_password表示数据库服务加密插件设定,用于向下兼容
[mysql]客户端配置标签(本地连接数据库生效)
01socket=/tmp/mysql.sock表示数据库服务本地连接文件(套接字文件)

3、方式三:设置数据库启动命令

# 利用数据库服务命令启动服务加参数信息,完成初始化定制操作
mysqld_safe --skip-grant-tables --skip-networking &

说明:在命令加参数信息完成的初始化过程,是会优于配置文件中加载的配置参数信息

mysql --help # 查看参数

image-20230623150311521

启动数据库服务程序,为什么有两个进程信息?
   一个是 mysqld_safe 
   另一个 mysqld
   简单说明:从进程管理知识分析
   mysqld_safe  父进程:接收任务信息  
   mysqld       子进程:处理任务信息  核心

   知识点补充:数据库服务启动与关闭管理

   运行 mysqld 命令 		--> 产生了 mysqld 进程信息 		 	--> 服务启动 
   mysqld
   命令文件 无法灵活调整
   运行 mysqld_safe 命令	--> 产生了 mysqld_safe 进程信息 	--> 服务启动 停止 重启
   mysqld_safe 脚本文件 可以根据需求灵活调整 实现不同启动 重启 停止效果

   systemctl  --> /etc/init.d/mysqld --> mysqld_safe --> mysqld
   service    --> /etc/init.d/mysqld 
   PS: 掌握数据库启动和停止方法和原理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值