Linux
Kali 安装
Kali-WIFI密码(字典)
Armbian安装OMV(NAS)
NPS 内网穿透
CloudFlare
CloudFlare-免端口
CloudFlare-KV存储
API 使用
API-抓包信息使用
Linux-系统配置
Linux-更换源
Linux-一键更换源
Linux-权限
Linux-分区管理
Linux-网卡配置
Linux 端口转发
Linux 交换内存
Linux 进程优先级
Linux 共享打印机
Linux-自定义服务(支持Docker开机自启)
Linux-硬/软链接/挂载
Linux-系统时钟
Linux-清理命令记录
Linux-一键DD脚本
Linux-安装根证书
Linux-TheFuck(命令纠正)
Linux 服务器
Linux-面试鸭
Linux-Mall-Cook(商店可视化搭建)
Linux-Scratch
Linux-CasaOS(家庭云操作系统)
Linux-TiddlyWiki(非线性网页笔记)
Linux-拖拽式H5
Linux-鲁班H5
Linux-SSL证书续订
Linux-acme(SSL证书脚本)
SSL证书转换
SSL-httpsok
SSL-其它工具
Linux-LoveCards(表白墙)
Linux-游戏导航
Linux 常用命令
Linux-scp
Linux-打包/解压/压缩
Linux-SSH
Linux-portknocking(端口敲击)
Linux-获取当前公网IP
Linux-自动挂载盘
Linux-代理
Linux-nmap(局域网扫描)
Linux-jq(JSON处理)
Linux-DDNS(自制脚本)
Linux-shell传递参数
Linux-if(判断)
Linux-curl/wget
Linux-which(查看命令所在路径)
Linux-Maven
Linux-ncdu(清理日志)
Linux-共享
Linux-screen(终端切换)
Linux-Macchanger(MAC修改)
Linux-iptables(包过滤防火墙系统)
Linux-祸害人脚本
Linux-模拟网络延迟环境
Linux-Git
Linux-apt(安装软件)
Linux-crontab(定时任务)
Linux-nano/vi/vim 编辑器
Linux 环境安装
Linux 安装 Node.js
Node.js-创建通用执行
Linux 安装 Java
Linux 安装 Go
域名注册
MariaDB-相关操作
未测试开源项目
SQL 学习
SQL-常用指令
Ansible(自动化运维)
Zabbix(运维监控)
网络设备概述
备份概述
雷池WAF
Linux-新旧服务器同步rpm软件包
本文档使用 MrDoc 发布
-
+
首页
MariaDB-相关操作
```bash # 进入数据库 mysql -u root -p ``` # 用户操作 ## 创建用户 ```mysql CREATE USER 'username'@'host' IDENTIFIED BY 'password'; ``` **参数:** ```mysql username:(zwzw) # 创建的用户名 host:(127.0.0.1) # 指定该用户在哪个主机上可以登陆, # 如果是本地用户可用localhost, # 如果想让该用户可以从任意远程主机登陆,可以使用通配符% password:(passwd) # 建议用户名和密码不要一致,上述只是为了演示 # 该用户的登陆密码,密码可以为空, # 如果为空则该用户可以不需要密码登陆服务器. ``` **示例:** ```mysql # 创建用户‘zwzw’,允许在 localhost 登录 MariaDB [(none)]> create user zwzw@localhost identified by 'zwzw' # 创建用户‘zwzw’,允许在 指定IP 登录 MariaDB [(none)]> create user zwzw@127.0.0.1 identified by 'zwzw' # 创建用户‘zwzw’,允许在 %(所有) 登录 MariaDB [mysql]> create user zwzw@% identified by 'zwzw'; ``` ## 用户授权 ```mysql GRANT privileges ON databasename.tablename TO 'username'@'host' ``` **参数:** ```mysql privileges: # 用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL databasename: # 数据库名 tablename: # 表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.* ``` **示例:** ```mysql # 授权zwzw拥有db1数据库的所有权限,允许在 localhost 登录 MariaDB [mysql]> grant select on db1.* to zwzw@localhost; MariaDB [mysql]> flush privileges; # 授权zwzw拥有db1数据库的所有权限,允许在 指定IP 登录 MariaDB [mysql]> grant all on db1.* to zwzw@'10.0.0.1'; MariaDB [mysql]> flush privileges; # 授权zwzw拥有db1数据库的所有权限,允许在 %(所有) 登录 # 注意你授权时用%,你创建用户时,必须也是%,要对应,否则报错 MariaDB [mysql]> grant all on db1.* to zwzw@'%'; MariaDB [mysql]> flush privileges; ``` ## 创建用户并授权 **授权zwzw用户拥有db1数据库的所有权限** ```mysql MariaDB [mysql]> grant all on *.* to zwzw@'10.0.0.1' identified by 'passwd+'; MariaDB [mysql]> flush privileges; ``` **授予外网登陆权限** ```mysql MariaDB [mysql]> grant all privileges on *.* to zwzw@'%' identified by 'passwd+'; MariaDB [mysql]> flush privileges; ``` **授予权限并且可以授权** ```mysql MariaDB [mysql]>grant all privileges on *.* to zwzw@'hostname' identified by 'passwd+' with grant option; MariaDB [mysql]> flush privileges; ``` **授权部分参数值:** ```mysql all privileges,all select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file ``` ## 查看用户 ```mysql # 查看当前登录用户,下列方式都可以 MariaDB [mysql]> select user(); MariaDB [mysql]> select current_user; MariaDB [mysql]> select current_user(); # 显示所有用户 MariaDB [mysql]> select User,Host,Password from mysql.user; # 显示所有的用户(不重复) MariaDB [mysql]> select distinct user from mysql.user; ``` ## 删除用户 ```mysql # 删除用户'zwzw' MariaDB [mysql]> delete from user where user='zwzw'; # 删除用户'zwzw' MariaDB [mysql]> delete from mysql.user where user='zwzw' and host='%'; # 删除用户'zwzw' MariaDB [mysql]> drop user 'zwzw'@'10.0.0.1'; ``` ## 撤销用户权限 ```mysql REVOKE privileges ON databasename.tablename FROM 'username'@'host'; ``` **参数:** ```mysql privileges: # 用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL databasename: # 数据库名 tablename: # 表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.* ``` **示例:** ```mysql # 假如你在给用户授权的时候是这样的: grant select on db1.user to zwzw@'%'; # 执行下面sql语句 revoke select on *.* from zwzw@'%'; # 并不能撤销该用户对db1数据库中user表的SELECT操作 # 假如你在给用户授权的时候是这样的: grant select on *.* to zwzw@'%'; # 执行下面sql语句 revoke select on db1.user from zwzw@'%'; # 并不能撤销该用户对db1数据库中user表的SELECT操作 ``` ## 查看授权信息 ```mysql MariaDB [(none)]> show grants for 'zwzw'@'10.0.0.1'; ``` ## 撤销用户所有权限 ```mysql revoke ALL PRIVILEGES ON `db1`.* from 'zwzw'@'10.0.0.1' ``` ## 修改用户密码 mariadb和mysql修改用户密码有所区别,password函数不可用了 ```mysql mysql> alter user 'root'@'localhost' identified by 'passwd'; mysql> alter user 'root'@'%' identified by 'passwd'; mysql> flush privileges; ``` # 数据库操作 ```mysql # 查看当前用户拥有权限的所有数据库(二选一) SHOW DATABASES; SHOW SCHEMAS; create database zwzw; # 创建数据库 zwzw USE zwzw; # 选择数据库 zwzw # 删除表 drop table zwzw; # 删除表 truncate table zwzw; # 删除表数据,不删除表结构 delete from zwzw; # 删除表数据,不删除表结构 delete from zwzw where user_id = 1; # 删除指定记录 # 创建表 devices,所有的表操作都需要先选择数据库 CREATE TABLE devices ( # 整数类型,自增,主键 id INT AUTO_INCREMENT PRIMARY KEY, # 限制255长度字符串类型,唯一键 device_id VARCHAR(255) UNIQUE NOT NULL, # 日期和时间类型,非空 expire_time DATETIME NOT NULL, # 布尔类型,非空 active BOOLEAN NOT NULL, # 日期和时间类型 last_active_time DATETIME, # 限制255长度字符串类型 name VARCHAR(255) # 最后一位无需“,” ); ``` **常用的数据类型包括:** - INT:整数类型 - VARCHAR(n):可变长度字符串类型,n 为字符串长度 - DATETIME:日期和时间类型 - BOOLEAN:布尔类型,可以为 TRUE 或 FALSE - FLOAT:浮点数类型 **常用的约束条件包括:** - NOT NULL:非空约束 - UNIQUE:唯一约束,保证每个字段的值都是唯一的 - PRIMARY KEY:主键约束,保证每个记录都有唯一的标识 - FOREIGN KEY:外键约束,用于关联两个表中的数据 ## 数据库备份和导入 ```bash # 备份数据库 mysqldump -u <MySQL用户名> -p <数据库名> > <导出的名称.sql> # 备份整个数据库 mysqldump -u <MySQL用户名> -p <数据库名> <表1> <表2> > <导出的名称.sql> # 备份特定表 mysqldump -u username -p --all-databases > <导出的名称.sql> # 备份所有表 mysqldump -u root -p --skip-extended-insert <指定数据库名称> > <导出的名称.sql> # 避免使用 MySQL 特有的扩展插入语法 CREATE DATABASE <数据库名>; # 创建指定数据库 # 导入数据库 mysql -u <MySQL用户名> -p <指定数据库名称> < <导入的名称.sql> ``` **相关教程:** [MariaDB数据库用户创建/删除及权限授权/撤回](https://www.bughz.com/forum/content-c44c6ec11f594f25ac8334ca07632853-e072398fe45542dfb366696262f2a325-1-1)
造物者W
2024年9月13日 16:17
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码