mysql基本管理
目录
目录
一、 MySQL数据库基本管理
1.1 数据库连接管理
1. mysql命令
-
从命令行调用:
mysql [options]
-
查看帮助信息
mysql --help(或-?)
-
查看版本
mysql --version(或-V)
-
常见的选项语法格式:
- 长格式(--[options])
- 短格式(-[options])
-
通过制定的主机进行连接
- 本地连接到在同一主机上运行的服务器
- 远程连接到在其他主机上运行的服务器
-
连接选项
-u:用户名
-p:密码
-h:远程连接
-P:指定端口号
-S:指定socket文件位置(使用yum或二进制包安装的默认在/tmp/mysql.sock)
1.2 数据库启动流程
MySQL的单进程是在/application/mysql/bin/mysqld中
/application/mysql/support-files/mysql.server复制到/etc/init.d中是为了方便启动。
/application/mysql/bin/mysqld_safe脚本路径
1.3 关闭数据库
/etc/init.d/mysqld stop
mysqladmin shutdown
不要暴力停止数据库,会引发故障问题。
常见错误代码
也可以使用peeror命令查看代码信息
1.4 MySQL配置文件
1.4.1 配置文件内容
路径:/etc/my.cnf
不仅可以影响实例启动,还影响客户端程序
- 服务器:
[mysqld]
......
[mysqld_safe]
......
[server]
#不常用
- 客户端
[mysql]
......
[mysqldump]
......
服务器端:
[mysqld]
**设置路径**
datadir
basedir
socket
log路径
...
**系统变量**
port
server-id
内存参数
...
**注意:修改完配置文件后需要重启生效**
客户端配置:
[client]
[mysql]
socket=
user=
password=
#修改客户端的配置不需要重启
1.4.2 配置文件读取顺序:
注意:如果使用./bin/mysqld_safe 守护进程启动mysql数据库时,使用了--defaults-file=<配置文件的绝对路径>参数,这时只会使用这个参数指定的配置文件。
1.5 用户管理
1.5.1 数据库中查询用户:
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *FE28814B4A8B3309DAC6ED7D3237ADED6DA1E515 |
| root | 127.0.0.1 | |
+------+-----------+-------------------------------------------+
2 rows in set (0.05 sec)
1.5.2 用户的属性
- 用户的作用:
- 用户登录
- 用于管理数据库及数据
- 权限:
- 对数据库的读、写等操作
- (insert update、select等)
- 角色:
- 数据库定义好的一组权限的定义
- (all privileges、replication slave等)
- 权限范围:
- 全库级别:.
- 单库级别:user01.*
- 单表级别:user01.t1
1.5.3 用户操作
- 创建用户
格式
create user '用户名'@'主机' identified by '密码';
实例
create user 'user01'@'10.0.0.%' identified by '123456';
或
create user 'user011'@'10.0.0.0/255.255.255.0' identified by '123456';
- 查看权限
mysql> show grants for user01@'10.0.0.%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for user01@10.0.0.% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'10.0.0.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
- 删除用户
drop user user011@'10.0.0.0/255.255.255.0';
特殊的删除方法:
delete from mysql.userwhere user='user01' and host='localhost';
强制删除后刷新授权表:
flush privileges;
- 用户授权
grant all on user01.* to 'user01'@'10.0.0.%';
在创建用户的同时进行授权:
grant all on user01.* to user@'10.0.0.%' identified by '123456';
收回权限:
revoke all on user01.* from user01@'10.0.0.%';
收回权限要注意收回的级别
常用的权限
INSERT,SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
问题:
在给用户授权时,权限冲突的情况下以谁为准?
mysql> show grants for user01@'10.0.0.%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for user01@10.0.0.% |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user01'@'10.0.0.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `user01`.* TO 'user01'@'10.0.0.%' |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
第一行user01用户没有数据库的操作权限;但是第二行有user01这个库的操作权限。
结论:
用户永远以最大的权限为准。