1. 新增用户

 

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

 

2. 修改用户密码

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

3. 删除用户

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 例子

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

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

 

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

mysqladmin -uroot password 'newpassword';
update user set password='newpassword' where user='root'

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

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

mysql_install_db --user=mysql,

然后重启

mysqld_safe --user=mysql &


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

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

3、  添加用户和设置权限

而且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的当前用户
mysql>       SELECT       USER      ();     
      +      ----------------+     
      |       USER      ()         |     
      +      ----------------+     
      | root@localhost |     
      +      ----------------+     
      1 row       in       set       (0.00 sec)
#查看所有用户
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,如果需要可以手动修改。
mysql>       select       @@version ;     
      +      ------------+     
      | @@version  |     
      +      ------------+     
      | 5.1.73-log |     
      +      ------------+     
      1 row       in       set       (0.00 sec)

 

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

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)

#查看当前写入的日志

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 找到日志的配置路径

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

查看日志内容

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

  

#查看MySQL支持的字符集
mysql> show       character       set       ;
#查看默认字符集
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)

#查看某一库的字符集

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

查看某一表的字符集

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)

#修改字符集

mysql>      alter       database       mydb       character       set       utf-8;

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

[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