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。
在安装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