详情

首页手游攻略 mysql经常使用的dba操作做法实例代码实用指南

mysql经常使用的dba操作做法实例代码实用指南

佚名 2026-10-28 09:00:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“mysql经常采用的dba操作做法实例代码”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

一、数据库操作

1.1 新建数据库语法

新建名称为“testdb”数据库,同时设定编码集为utf8

create database if not exists testdb default charset utf8 collate utf8_general_ci;

1.2 删除数据库语法

删除名称为“testdb”数据库

drop database testdb;

二、用户操作

2.1 新建用户

新建了一个名为:test 密码为:1234 的用户

create user ‘test'@‘localhost' identified by ‘1234';

注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都能够登录。也能够指定某台机器能够远程登录。

2.2 查询用户

查询用户

select user,host from mysql.user;

2.3 删除用户

删除用户“test”

drop user test@localhost ;

或者

delete from mysql.user where user=‘test';

若新建的用户允许任何电脑登陆,删除用户如下所示

drop user test@‘%';

2.4 更改密码

方法1,密码实时更新;修改用户“test”的密码为“1122”

set password for test =password(‘1122');

方法2,需刷新;修改用户“test”的密码为“1234”

update mysql.user set password=password(‘1234') where user=‘test'

方法3,服务器上去访问改密码

set password = password(‘19920503');
alter user ‘root'@‘localhost' password expire never;
flush privileges;

2.5 查看用户权限

查看用户“test”

show grants for test;

2.6 用户分配权限

授予用户test借助外网IP对数据库“testdb”的全部权限

grant all privileges on ‘testdb'.* to ‘test'@‘%' identified by ‘1234';

授予用户“test”借助外网IP对于该数据库“testdb”中表的新建、修改、删除权限,以及表数据的增删查改权限

grant create,alter,drop,select,insert,update,delete on testdb.* to test@‘%';

2.7 取消用户权限

取消用户所有数据库(表)的所有权限

revoke all on . from tester;

2.8 更快脚本

新建数据、新建用户,并分配权限

create database fb_quartz default character set utf8 collate utf8_general_ci;
create user ‘fb'@‘%' identified by ‘febs#123';
create user ‘fb'@‘localhost' identified by ‘febs#123';
grant all privileges on fb_quartz.* to ‘fb'@‘%' identified by ‘febs#123';
grant all privileges on fb_quartz.* to ‘fb'@‘localhost' identified by ‘febs#123';
flush privileges;

三、其他

3.1 表空间回收

1、drop table table_name 立刻释放磁盘空间 ,不管是 InnoDB和MyISAM

2、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。
 truncate table其实有点类似于drop table 然后create。只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等,就不需要重新再搞一把。所以速度上应该是接近drop table的速度。

3、对于delete from table_name 删除表的全部数据,对于MyISAM 会立刻释放磁盘空间 (应该是做了特别处理,也比较合理); InnoDB 不会释放磁盘空间
 
4、对于delete from table_name where xxx带条件的删除,不管是innodb还是MyISAM都不会释放磁盘空间。

5、delete操作以后 使用optimize table table_name 会立刻释放磁盘空间。不管是InnoDB还是MyISAM 。 所以要想达到清理数据的目的,请delete以后执行optimize table 操作。

6、delete from表 以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间

总结

从实现思路看,总的来说,MySQLdba适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

相关资讯
点击查看更多
游戏推荐
推荐专题
热门阅读
推荐下载