彻底删除MySQL用户


搜索关键字:
  • mysql 删除用户 delete drop
  • linux mysql delete user
  • mysql delete vs drop user
参考链接:
参考解答:
(方法一)drop user 用户名;

作用:删除已经存在的用户,例如要删除 abc 这个用户,(drop user abc;)默认删除的是 abc@”%” 这个用户,如果还有其他用户,例如 abc@”localhost”, abc@”ip” ,则不会一起被删除。如果只存在一个用户 abc@”localhost” ,使用语句(drop user abc;)会报错,应该用(drop user abc@”localhost”;)如果不能确定(用户名@机器名)中的机器名,可以在mysql中的user表中进行查找,user列对应的是用户名,host列对应的是机器名。[删除账户及权限]

(方法二)delete from user where user=”用户名” and host=”机器名”;

delete也是删除用户的方法,例如要删除 abc@”localhost” 用户,则可以(delete from mysql.user where user=”abc” and host=”localhost”;)[删除账户]

注:drop删除掉的用户不仅将user表中的数据删除,还会删除诸如db和其他权限表的内容。而(方法二)只是删除了user表的内容,其他表不会被删除,后期如果命名一个和已删除用户相同的名字,权限就会被继承。

root@localhost [(none)]> status;
--------------
mysql  Ver 14.14 Distrib 5.6.25-73.1, for Linux (x86_64) using  6.3
...
Server version:        5.6.25-73.1 MySQL Community Server (GPL)


> select host,user,password from mysql.user;
> select host,user,password from mysql.user where user='';

> show grants for ''@localhost;
> drop user ''@localhost;
> flush privileges;

> select host,user,password from mysql.user;

> use mysql;
> update user set password=password('new-password-here') where user='root';

> select host,user,password from mysql.user;

==
DROP is used to remove tables (and databases).
DELETE is used to delete rows from tables.
==

/* 删除表中的[所有]记录 */
delete from mydb.mytable;

TRUNCATE TABLE mydb.mytable;
/* 在删除所有记录后重置 autoincrement 的值 */
ALTER TABLE `mytable` AUTO_INCREMENT = 1;

SELECT MIN(`column`) FROM `mytable`;
SELECT MAX(`column`) FROM `mytable`;

=EOF=

, ,

《 “彻底删除MySQL用户” 》 有 2 条评论

  1. TRUNCATE TABLE 可以完全的清空表的数据, 需要 DROP(删除表) 的权限。
    逻辑上, TRUNCATE TABLE 和 删除所有记录的 DELETE 类似, 也和 删除表(DROP TABLE) 再 重建表(CREATE TABLE) 类似。
    只是为了性能,它使用 DML 方法删除数据的。
    因此它不能回滚数据,它不能触发 DELETE 触发器, 如果有外键依赖与它的话, 将不能执行。

    关于这三个删除全部数据的性能, 经过阅读文档,得出这个结论: drop> truncate > delete 。

    任何事情都有两面性,性能高了,其他方面就弱了,比如安全方面。
    delete 是有事务的,也就是可以恢复数据的,但是其他两个,就不能恢复数据了。

    浅谈 mysql 删除或清空表的数据
    http://github.tiankonguse.com/blog/2015/01/10/mysql-delete-data.html

  2. 从 mysql_secure_installation 脚本中摘出来的一些语句:
    `
    设置从终端输入的MySQL密码
    UPDATE mysql.user SET Password=PASSWORD(‘$esc_pass’) WHERE User=’root’;
    删除匿名用户
    DELETE FROM mysql.user WHERE User=”;
    删除可远程登录的root账户
    DELETE FROM mysql.user WHERE User=’root’ AND Host NOT IN (‘localhost’, ‘127.0.0.1’, ‘::1’);
    删除测试数据库
    DROP DATABASE test;
    FLUSH PRIVILEGES;
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注