MySQL数据库创建及帐号管理

整理了一下菜鸟级MySQL常用操作。主要是数据库创建,帐号创建及修改密码等。

登录MySQL命令行

  • mysql命令可以指定用户名及密码

    $mysql -u username -p password

  • CentOS或Redhat也可以用root身份登录

数据库管理

  • 创建新的UTF8编码的数据库

    mysql> CREATE DATABASE `testdb1` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
    
  • 修改已有数据库的默认字符集

    mysql> use testdb1;
    mysql> alter database testdb1 character set utf-8;
    
  • 选择需要操作的数据库

    mysql> USE testdb1;
    
  • 删除数据库(慎用)

    mysql> SHOW DATABASES;
    
  • 列出所有表

    mysql> show tables;
    
  • 显示数据表结构

    mysql> describe 表名;
    
  • 修改表名

    mysql> ALTER TABLE table_name RENAME TO new_table_name;
    
  • 删除数据表 (慎用)

    mysql> drop table 表名;
    

数据库用户帐号管理

  1. 使用GRANT命令创建新帐号,允许操作指定数据库的所有权限

    • 权限可以包括:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP, 也可以用ALL PRIVILEGES代表所有操作权限,关键字 “PRIVILEGES” 可以省略

    • 数据库名及表名都可以用通配符*,分别代表所有数据库及所有表。但是一般不推荐创建能操作所有数据库的超级用户。

    • 客户端主机IP可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%’表示从任何地址连接。

    • 例如:

      mysql> GRANT SELECT,UPDATE ON testdb1.table1 TO myuser@'localhost' IDENTIFIED BY 'mypassword';
      mysql> GRANT ALL PRIVILEGES ON testdb1.* TO myuser@'%' IDENTIFIED BY 'mypassword';`
      mysql> GRANT ALL PRIVILEGES ON testdb1.* TO myuser@'192.168.0.0/255.255.0.0' IDENTIFIED BY 'mypassword';
      
  2. 查看数据库用户权限

    • 查看当前用户的权限: mysql> SHOW GRANTS;
    • 查看其他用户的权限: mysql> SHOW GRANTS FOR otheruser@'%';
  3. 撤销已经赋予给 MySQL 用户的权限

    REVOKE 跟 GRANT 的语法差不多,只需要把关键字 “TO” 换成 “FROM” 即可:

    mysql> REVOKE ALL ON *.* FROM myuser@localhost;
    
  4. 查看所有的用户

    mysql> SELECT USER,HOST,PASSWORD FROM mysql.user;
    
  5. 查看所有用户的所有权限

    首先生成所需要的SQL语句,然后分别执行

    mysql> SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') AS query FROM user;
    
  6. 删除用户

    直接使用SQL语句,对user表进行数据删除。如:

    mysql> DELETE FROM mysql.user WHERE User="phplamp" AND Host="localhost";
    mysql> flush privileges;
    

    注意该表的为‘User’和‘Host’的组合主键。通过指定这两个字段的值,确认一条唯一数据。

  7. 修改某用户密码

    • 方法一:通过set password这条SQL语句设置

      mysql> set password for 'myuser'@'localhost' = password('新密码');
      
  • 方法二:直接更新user表的数据

    ```
    mysql>update mysql.user set password=password('新密码') where User="myuser" and Host="localhost";
    mysql> flush privileges;
    
    	
Share Comments
comments powered by Disqus