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