
MySQL基础管理
用户 权限管理
用户管理
- 作用:登录,管理数据库对象。(逻辑结构)
用户的定义
mysql的用户格式:root@'localhost'
,用户名@白名单。
1 | 白名单例: |
用户管理语句
创建用户:
1
2mysql> create user felix@'172.16.1.%' identified by '123';
Query OK, 0 rows affected (0.00 sec)查看mysql库中user表中的列
mysql> desc mysql.user;
其中 host user authentication_string
字段为主机,用户,和密码
查询以上字段mysql> select host,user,authentication_string from mysql.user;
删除用户
mysql> drop user oldboy@'172.16.1.%';
修改用户
mysql> alter user root@'localhost' identified by '123';
权限管理
作业:控制用户登录之后能对MySQL对象做哪些命令。
定义:
1 | ALL: |
ALL
: 以上所有权限,一般是普通管理员拥有的with grant option
:超级管理员才具备的,给别的用户授权的功能
**8.0 版本新特性(了解):**加入了role(角色)的概念。
授权管理
给用户授权
1 | grant ALL on woedpress.* to wordpress@'10.0.0.%' identified by '123'; |
范围:
- *.* #所有库所有表
- wordpress.* #wordpress库下的所以表
- wordpress.t1 #wordpress库下t1表
例子:
1.授权远程用户root通过Navicat,远程管理数据库。grant all on *.* to root@'172.16.1.%' identified by '123';
2.授权zhihu用户远程连接zhihu库 并给all权限grant select,update,delete,insert on zhihu.* to zhihu@'10.0.0.%' identified by '123';
思考一个问题:
1 | 执行顺序: |
问:oldboy@’10.0.0.%’ 能对t1表具备什么权限?
答:MySQL中的权限是可以继承,多次授权是叠加的。
所以,想要取消某个权限,必须通过回收的方式实现,而不能多次重复授权。
查看用户权限
mysql> show grants for root@'localhost';
USAGE:空权限
上图表示:USAGE表示权限为空,只能连接到数据库不可对数据库进行操作
超级管理员和普通管理员的区别:
sql结尾的with grant option
权限回收
mysql> revoke delete on zhihu.* from 'zhihu'@'10.0.0.%';
MySQL 连接管理
mysql命令:
- -u 用户名
- -p 密码
- -h IP
- -P 端口
- -S sock文件(配置文件中有路径)
- -e 非交互式运行sql语句
- < 导入sql脚本
TCP/IP方式(远程、本地):mysql -uroot -poldboy123 -h 10.0.0.51 -P3306
Socket方式(仅本地):mysql -uroot -poldboy123 -S /tmp/mysql.sock
远程的客户端工具
Nvichat等
MySQL 启动管理
辅助脚本方式(普通的启动关闭):
1 | sys-v :/etc/init.d/mysqld |
维护性的启动方式:
1 | /application/mysql/bin/mysqld_safe --skip-grant-tables --skip-networking & |
数据库启动验证
1 | netstat -lnp |grep 3306 |
MySQL 初始化配置
预编译时进行设置:只能在编译安装中实现,硬编码配置到程序中。
初始化配置文件(my.cnf)
初始化配置文件默认读取位置
1 | [root@db01 ~]# mysqld --help --verbose |grep "my.cnf" |
命令行模式
1 | [root@db01 ~]# mysqld_safe --defaults-file=/opt/my.cnf --socket=/tmp/asdad & |
配置生效优先级:命令行指定>默认位置>预编译
配置文件书写格式
初始化配置文件应用
配置文件的作用
- 数据库的启动:mysqld mysqld_safe
- 客户端的连接:mysql mysqldump mysqladmin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15[程序名]
配置项=xxx
配置项=xxx
配置项=xxx
配置项=xxx
服务端
[server] <==
[mysqld] <==服务端参数可写在这个标签下
[mysqld_safe]
客户端
[client] <==客户端软件中通用的参数写在该标签下
[mysql]
[mysqldump]
mysql初始化配置常用参数(通用模板)
参考:https://dev.mysql.com/doc/refman/5.7/en/option-files.html
1 | [mysqld]#服务器端 |