一、数据库服务用户管理
在数据库服务中,也是有用户知识概念的,类似系统中的用户管理应用,主要利用用户管理知识,可以实现:
- 用户登录数据库服务系统中(实现数据库服务登录)
- 用户管理数据库服务中对象(实现数据库对象管理)
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;
输出展示的信息表示内容:
输出列 | 解释说明 |
---|---|
Privilege | 表示可以授权的所有权限信息展示 |
Context | 表示设置的权限可以对数据库服务哪些资源进行操作 |
Comment | 对相应的权限功能进行简单解释说明 |
核心重要授权权限总结
权限 | 授权资源 | 解释说明 |
---|---|---|
Select | Tables | 可以对表进行操作,查询表中数据信息 |
Insert | Tables | 可以对表进行操作,插入表中数据信息 |
Update | Tables | 可以对表进行操作,修改表中数据信息 |
Delete | Tables | 可以对表进行操作,删除表中数据信息 |
Alter | Tables | 可以对表进行操作,修改表中结构信息(元数据-属性) |
Index | Tables | 可以对表进行操作,删除或创建表中的索引信息 |
Create | Databases,Tables | 可以对表和库进行操作,用于创建数据库和表信息 |
Drop | Databases,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(查询)的权限
企业生产情况授权思路:
企业生产库表授权一定要更小,最小的授权最大的安全,给业务用户常规授权,包含对内容的增删改查;
序号 | 权限 | 互联网应用 |
---|---|---|
01 | SELECT 查询数据 | 访问网站页面时,表示浏览查看数据信息; |
02 | INSERT 插入数据 | 访问网站页面时,表示发表文章数据信息; |
03 | UPDATE 修改数据 | 访问网站页面时。表示修改文章数据信息; |
04 | DELETE 删除数据 | 访问网站页面时,表示删除文章数据信息; |
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
新建数据库连接
选择对应的数据库版本
输入服务器地址和密码
五、数据库服务初始配置
数据库服务的初始化配置操作的目的,主要是在某些场景下,想让数据库服务程序启动后,具备一些定制化的功能应用;
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] | 服务端配置标签 | |
01 | user=mysql | 表示数据库服务管理用户信息 |
02 | basedir=/usr/local/mysql | 表示数据库服务程序安装路径 |
03 | datadir=/data/3306/data | 表示数据库服务数据存储路径 |
04 | server_id=6 | 表述数据库服务标识节点编号(主从复制的唯一编号) |
05 | port=3306 | 表示数据库服务启动端口设定 |
06 | socket=/tmp/mysql.sock | 表示数据库服务本地连接文件(套接字文件) |
07 | default_authentication_plugin=mysql_native_password | 表示数据库服务加密插件设定,用于向下兼容 |
[mysql] | 客户端配置标签(本地连接数据库生效) | |
01 | socket=/tmp/mysql.sock | 表示数据库服务本地连接文件(套接字文件) |
3、方式三:设置数据库启动命令
# 利用数据库服务命令启动服务加参数信息,完成初始化定制操作
mysqld_safe --skip-grant-tables --skip-networking &
说明:在命令加参数信息完成的初始化过程,是会优于配置文件中加载的配置参数信息
mysql --help # 查看参数
启动数据库服务程序,为什么有两个进程信息?
一个是 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: 掌握数据库启动和停止方法和原理