mysql 新增 删除用户和权限分配

本文介绍了MySQL中新增、修改、删除用户的基本操作,并详细解释了如何为用户分配权限及设置用户密码。包括如何通过GRANT语句为特定用户授予数据库权限,以及如何通过INSERT语句添加新的用户信息。此外,还提供了查看当前用户、所有用户、数据库版本、日志配置等实用技巧。

1. 新增用户

 

mysql>insert into mysql.user(Host,User,Password) values("localhost","lionbule",password("hello1234"));  


mysql>flush privileges;  

 

2. 修改用户密码


mysql>update mysql.user set password=password('new password') where User="lionbule" and Host="localhost";  


mysql>flush privileges;  

3. 删除用户


mysql>DELETE FROM user WHERE User="lionbule" and Host="localhost";  

mysql>flush privileges;  

 

4. 权限分配

    4.1. grant用法

           grant 权限 on 数据库.* to 用户名@'登录主机' identified by '密码'


权限:  

    常用总结, ALL/ALTER/CREATE/DROP/SELECT/UPDATE/DELETE  

数据库:  

     *.*                    表示所有库的所有表  


    test.*                表示test库的所有表 

 

    test.test_table  表示test库的test_table表  

     

用户名:  

     mysql账户名  

登陆主机:  

     允许登陆mysql server的客户端ip  

     '%'表示所有ip  


     'localhost' 表示本机  


     '192.168.10.2' 特定IP  

密码:  

      账户对应的登陆密码  

 

    4.2 例子


mysql>grant all  on test.* to lionbule@'%' identified by 'hello1234';  

mysql>flush privileges;  

    新增密码为‘hello234’的用户lionbule对test库拥有所有操作权限,并不限制lionbule用户的登陆IP。     

 




1、mysql默认安装后,生成一个super-user:root,密码为空,给root用户设置密码的方法很多

(1)mysqladmin -uroot password 'newpassword';

(2)update user set password='newpassword' where user='root'

2、如果不慎将root用户给删除了,可以尝试以下办法操作。

(1)、直接重新安装初始化数据库mysql,不会对数据库目录下/mysql/var/目录下其他数据库带来影响,

mysql_install_db --user=mysql,

然后重启

mysqld_safe --user=mysql &


(2)、尝试输入mysql --skip-grant-lables &,跳开权限认证,对mysql数据库中的user授权表进行操作,

insert into user (host,user,password,'','','','',''........)  values ('localhost,'root','root','','','','',''........);

3、  添加用户和设置权限

在安装MySql后只有一个超级管理权限的用户ROOT,而且ROOT限制只能在数据库本机上使用,如果我们要远程管理MySql咋办呢?那么事实上我们需要添加一个具有超级管理权限并且可能远程访问的超级用户,而在 MySql中有两种方法可以实现这个目的,我们以增加一个超级权限管理用户admin为例来说明。 

       你可以通过发出GRANT语句增加新用户:首先在数据库本机上用ROOT用户登录上MySql(不用我告诉你如何登录吧?),然后: 

mysql>GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'something' WITH GRANT OPTION; 


mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'something' WITH GRANT OPTION; 

第一句增加了一个admin用户授权通过本地机(localhost)访问,密码“something”。


第二句则是授与admin用户从任何其它主机发起的访问(通配符%)。 
       
        你也可以直接通过发出INSERT语句增加同样的用户存取信息: 


mysql>INSERT INTO user VALUES('localhost','admin',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y') 


mysql>INSERT INTO user VALUES('%','admin',PASSWORD('something'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y') 

      取决于你的MySQL版本,对上述,你可能必须使用一个不同数目'Y'值(在3.22.11以前的版本有更少的权限列)。 

验证方法,在命令行中输入:mysql -h主机名或IP地址 -u用户名 -p密码 




#查看MySQL的当前用户
1
2
3
4
5
6
7
mysql> SELECT  USER ();
+ ----------------+
| USER ()         |
+ ----------------+
| root@localhost |
+ ----------------+
1 row in  set  (0.00 sec)
#查看所有用户
1
2
3
4
5
6
7
8
9
10
mysql> SELECT  user ,host, password  FROM  mysql. user ;
+ ---------+-------------+-------------------------------------------+
| user     | host        | password                                   |
+ ---------+-------------+-------------------------------------------+
| root    | localhost   | *7AE39BE5035D5C32361400FF7DEDD757AA76896A |
| root    | 10.4.5.9    | *7AE39BE5035D5C32361400FF7DEDD757AA76896A |
| root    | 127.0.0.1   | *7AE39BE5035D5C32361400FF7DEDD757AA76896A |
| gechong | 10.4.14.168 | *11B9ACA21786F766739D0EB1483C5F64212B81AC |
+ ---------+-------------+-------------------------------------------+
4 rows  in  set  (0.00 sec)

  

#查看当前数据库版本,版本5.5一下默认的存储引擎并非是InnoDB,如果需要可以手动修改。
1
2
3
4
5
6
7
mysql> select  @@version ;
+ ------------+
| @@version  |
+ ------------+
| 5.1.73-log |
+ ------------+
1 row in  set  (0.00 sec)

 

#查看数据库是否启用了log_bin

1
2
3
4
5
6
7
8
9
10
mysql> show variables like  '%log_bin%' ;
+ ---------------------------------+-------+
| Variable_name                   | Value |
+ ---------------------------------+-------+
| log_bin                         | ON     |
| log_bin_trust_function_creators | OFF    |
| log_bin_trust_routine_creators  | OFF    |
| sql_log_bin                     | ON     |
+ ---------------------------------+-------+
4 rows  in  set  (0.00 sec)

#查看当前写入的日志

1
2
3
4
5
6
7
mysql> show master status ;
+ ----------------+----------+--------------+------------------+
| File           | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+ ----------------+----------+--------------+------------------+
| log-bin.000002 |      231 | test         |                  |
+ ----------------+----------+--------------+------------------+
1 row in  set  (0.00 sec)

根据/etc/my.cnf 找到日志的配置路径

1
log-bin = /var/lib/mysql/log-bin

查看日志内容

1
[root@10-4-14-168 ~]# mysqlbinlog /var/lib/mysql/log-bin.000002

  

#查看MySQL支持的字符集
1
mysql> show character  set  ;
#查看默认字符集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> show variables like  '%char%' ;
+ --------------------------+----------------------------+
| Variable_name            | Value                      |
+ --------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                      |
| character_set_results    | latin1                     |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+ --------------------------+----------------------------+
8 rows  in  set  (0.00 sec)

#查看某一库的字符集

1
2
3
4
5
6
7
mysql> show create  database  test;
+ ----------+---------------------------------------------------------------+
| Database  | Create  Database                                                |
+ ----------+---------------------------------------------------------------+
| test     | CREATE  DATABASE  `test` /*!40100 DEFAULT CHARACTER SET utf8 */  |
+ ----------+---------------------------------------------------------------+
1 row in  set  (0.00 sec)

查看某一表的字符集

1
2
3
4
5
6
7
8
9
mysql> show create  table  test.t1 \G
*************************** 1. row ***************************
        Table : t1
Create  Table : CREATE  TABLE  `t1` (
   ` user ` char (16) CHARACTER  SET  utf8 COLLATE  utf8_bin NOT  NULL  DEFAULT  '' ,
   `host` char (60) CHARACTER  SET  utf8 COLLATE  utf8_bin NOT  NULL  DEFAULT  '' ,
   ` password ` char (41) CHARACTER  SET  latin1 COLLATE  latin1_bin NOT  NULL  DEFAULT  ''
) ENGINE=MyISAM DEFAULT  CHARSET=utf8
1 row in  set  (0.00 sec)

#修改字符集

1
mysql> alter  database  mydb character  set  utf-8;

#可以直接在配置文件中做添加,然后重启服务

1
2
3
4
5
[client]
character_set_server = utf8
 
[mysqld]
character_set_server = utf8

  


SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;


show grants for 'cactiuser'@'%';   


select * from mysql.user where user='cactiuser' \G   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值