MySQL基础管理
2024-09-06 07:20:13
1.用户管理
1.用户的作用:
登录;管理相对应的库表
2.定义
定义用户名和白名单
all@'10.0.0.%'
命名用户名时,最好不要太长,要和业务相关
白名单类型:
user@'10.0.0.56'
user@'%'
user@'10.0.0.%' 255.255.255.0 24位
user@'10.0.0.%/255.255.254.0' 23位
user@'10.0.0.5%' 50-59
user@'localhost' 本地
2.用户的相关命令
创建用户
#创建一个oldguo的用户,该用户允许10.0.0.%网段的访问,密码123
create user oldguo@'10.0.0.%' identified by '123';
查询用户
#查询数据库中所有的用户
select user,host from mysql.user;
查询用户的密码
select user,host,authentication_string from mysql.user;
修改用户密码
alter user oldguo@'10.0.0.%' identified by '123456';
删除用户
drop user oldguo@'10.0.0.%'
在8.0版本之前,可以在授权时创建用户,也就是一条命令创建用户并授权,但是在8.0之后,只能是先创建用户在授权。
grant all on *.* to workpress@'%' identified '123' 8.0之后不好使了
3.权限管理
1.MySQL权限列表
查看权限列表: show privileges;
2.授权和回收权限
GRANT 权限 ON 权限作用范围 TO 用户 IDENTIFIED BY '123';
权限范围:
*.* ===》 一般是管理员会设置的方法,所有库下的所有表
oldguo.* ===> 一般是业务用户会设置的方法,某个库下的所有表
oldguo.t1 ===> 一般是业务用户会设置的方法,某个库下的某张表
3.企业授权案例
(1)授权一个管理员用户oldguo,可以从10网段任意地址登录连接管理数据库
GRANT all ON *.* TO oldguo@'10.0.0.%' identified by '123456' with grant option;
(2)授权一个业务用户app,可以从10网段地址访问app库的所有的表
GRANT select,update,insert,delete ON app.* app@'10.0.0.%' IDENTIFIED BY '123456';
(3)授权一个开发用户dev,可以对dev库进行业务的开发
4.查看用户的权限信息
show grant for app@'10.0.0.%';
5.回收权限
reboke 权限 on 库 from 用户;
reboke delete,drop on app.* from app@'10.0.0.%';
注意:数据库的权限并不能通过覆盖式删除命令,数据库授权式相加的,像删除权限,必须执行删除命令。
4.root 管理员密码忘记或被篡改如何处理
--skip-grant-tables #解除用户验证
--skip-networking #禁止tcp连接
1.首先,正常关闭数据库
systemctl stop mysqld
2.启动数据库时加上以上两个参数,使用mysql_safe 启动,并放入后台(类使用Linux系统的单用户模式)
mysql_safe --skip-grant-tables --skip-networking &
3.使用mysql登录数据库
mysql
4.加载授权表
flush privileges;
5.修改数据库登录密码
alter user root@'localhost' identified by '123456';
6.重启数据库到正常模式
systemctl restart mysqld
7.验证数据库密码
mysql -uroot -p123456
5.MySQL的连接管理
1.自带客户端工具
mysql 主要是用来连接用,参数:
-u 用户名
-p 密码
-h ip
-P 端口
-S socket位置
-e 外部执行命令,免交互
< 导入
例子:
(1)TCP连接远程登陆
mysql -uoldguo -p123456 -h 10.0.0.51 -P 3306
(2)socket 连接方式
mysql -uoldguo -p123456 -S /tmp/mysql.sock
(3)免交互,执行命令
mysql -uoldguo -p123456 -e 'show processlist;'
(4)导入数据库
mysql -uroot -p < t100w.sql
数据库内部命令
source /root/world.sql
验证是本地连接还是远程连接
show processlist;
当我们登录MySQL时,既有tcp,又有socket,默认tcp登录
mysqladmin
修改密码
mysqladmin -uroot -p123456 password 123
关闭数据库
mysqladmin -uroot -p123 shutdown
mysqldump
2.第三方开发工具
sqlyog
navicat
workbench 比较重
3.应用程序连接
php-fpm
pip3 install mysql
6.MySQL的启动关闭
数据库初始化完成之后,却启动不了,日志里面没有报错信息,可能是权限不对,可以使用mysqld 前台启动
systemctl ------> mysql.server start ----> mysql_safe -----> mysqld
1. MySQL初始化配置方法
源码安装 初始化配置文件 命令行启动时定制
优先级 命令行启动时定制 > 初始化配置文件 > 源码安装
当我们想测试暂时性测试时,临时性维护,可以采用命令行模式
2.初始化配置文件
查看mysqld 启动时自动加载的配置文件,建议一个mysql实例一个配置文件
mysqld --help --verbose | grep my.cnf
默认mysqld会加载所有的配置文件
3.配置文件书写格式
[root@db01 data_3306]# cat /etc/my.cnf
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
标签项 ====> [mysqld]
服务器端 [server]: [mysqld],[mysqld_safe] ====> 影响到MySQL启动
客户端 [clinet] : [mysql] ,[mysqldump] ====> 影响本地客户端程序
配置项 ====> key=value
4. 自定制初始化配置文件设置
vim /opt/a.cnf
############################
[mysqld]
user=mysql
port=3306
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3306
server_id=6
socket=/tmp/a.sock
############################
启动数据库
mysqld --defaults-file=/opt/a.cnf &
连接数据库
mysql -S /tmp/a.sock
7.多实例环境的规划和配置
在分布式架构中应用广泛
多实例端口分别为
3307 3308 3309
1. 端口和目录
mkdir -p /data/mysql/data_{3307,3308,3309}
2. 配置文件准备
cat > /data/mysql/my3307.cnf <<EOF
[mysqld]
user=mysql
port=3307
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3307
server_id=7
socket=/tmp/mysql3307.sock
EOF
cat > /data/mysql/my3308.cnf <<EOF
[mysqld]
user=mysql
port=3308
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3308
server_id=8
socket=/tmp/mysql3308.sock
EOF
cat > /data/mysql/my3309.cnf <<EOF
[mysqld]
user=mysql
port=3309
basedir=/usr/local/mysql57
datadir=/data/mysql/data_3309
server_id=9
socket=/tmp/mysql3309.sock
EOF
3. 授权
chown -R mysql.mysql /data
4.初始化数据
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3307
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3308
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql57 --datadir=/data/mysql/data_3309
5.启动多实例
mysqld --defaults-file=/data/mysql/my3307.cnf &
mysqld --defaults-file=/data/mysql/my3308.cnf &
mysqld --defaults-file=/data/mysql/my3309.cnf &
netstat -tulnp
6. 使用 systemd 管理多实例
cat >/etc/systemd/system/mysqld3307.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3307.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3308.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3308.cnf
LimitNOFILE = 5000
EOF
cat >/etc/systemd/system/mysqld3309.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql57/bin/mysqld --defaults-file=/data/mysql/my3309.cnf
LimitNOFILE = 5000
EOF
7.测试启动
pkill mysqld
systemctl start mysqld3307
systemctl start mysqld3308
systemctl start mysqld3309
最新文章
- EF里单个实体的增查改删以及主从表关联数据的各种增删 改查
- tornado学习笔记18 _RequestDispatcher 请求分发器
- FastDateFormat
- 洛谷 P1012 拼数 Label:续命模拟QAQ
- GC之六--SystemGC完全解读
- Android AsyncTask完全解析,带你从源码的角度彻底理解
- C#在线更新程序[下载程序、解压缩程序、控制台程序]
- TCP/IP详解学习笔记(10)-- DNS:域名系统
- 华为OJ-合唱队
- 如何实现一个通用的IHttpHandler 万能的IHttpHandler HttpWebRequest文件上传
- 用PHP删除文件操作unlink
- where和having的区别
- 通过linux的iso镜像安装(RPM)扩展工具包
- Sublime Text 3 注册码
- 第4章 同步控制 Synchronization ----互斥器(Mutexes)
- Iview的开发之路
- C(n,m)排列组合算法
- TensorFlow保存和载入模型
- ie请求缓存问题,页面内容没有及时更新
- linux c/c++ 文件是否存在
热门文章
- FS获取KERNEL32基址的三种方法
- I. Five Day Couple--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)
- web跨域问题解决方案
- 拾遗:关于“尾递归”- tail recursion
- CSS中复选框单选框与常用12px文字不对齐问题(转载)
- html5本地存储(一)------ web Storage
- 【HDOJ】 P2054 A == B ?
- Thread相关API
- add a characteristic in enovia PLM
- 微信小程序之评分页面