虽然本电脑配置还能够,但我总有点脑壳抽筋,不想多装软件拖慢电脑速度。php
和数据库相关的本机已有WampServer和navicat(如今不搞php,wamp能够卸载了,navicat挺好用的,以为太大的话能够试试小工具SQL-Front),现现在须要搞Java的mysql使用,便不得不装mysql了。html
不知何时下载的mysql安装包有30+M,如今官方版的得200M吧http://dev.mysql.com/downloads/mysql;mysql
小安装包安装过程很顺利,肯定按钮没有显示出配置对话框,cd到bin目录下也彻底用不了,卧槽,这什么软件!!sql
装mysql官方绿色版算了数据库
下载获得mysql-noinstall-5.1.57-win32.zip(115M,某网盘下得),解压服务器
最经常使用子目录:ide
bin 包含mysql的启动、中止等各类操做命令文件;工具
data数据库存放目录;编码
Docs包含了mysql的文档;spa
5个ini文件分别表示不一样级别的mysql配置文件;
http://hi.baidu.com/lomgzhu/item/a7c976f126e802713c198b6f
一、下载mysql(免安装版)
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-win32.zip
减压到一个指定目录下。例如:E:\Program Files (x86)\mysql-5.6.14
二、配置my.ini文件
把my-small.ini、my-huge.ini或者default.ini修改成my.ini(我改的my-small.ini)
修改安装目录和db位置以及编码、端口等
[mysqld]
# 目录文件若是不加引号,路径中就不能有空格
basedir = "E:/Program Files (x86)/mysql-5.6.14/"
datadir = "E:/Program Files (x86)/mysql-5.6.14/data/"
port = 3306
设置默认编码格式放到[mysql]、[mysqld]或者[client]下针对的域不一样(其实这些能够进入mysql后设置)
在[mysqld]组下面添加,设置服务器端编码
{!若是写成default-character-set = utf8会报错,see MySQL基础配置之mysql的默认字符编码的设置(my.ini设置字符编码)}
character-set-server=utf8
在 [client]组下面添加,设置客户端编码
default-character-set = utf8
三、配置服务
管理员身份执行注册服务(这里若是没有配置环境变量的话,须要进入到mysql的bin目录下执行;环境变量配置在path下增长E:\Program Files (x86)\mysql-5.6.14\bin就行)
mysqld --install mysql-5.6.14 --defaults-file="E:\Program Files (x86)\mysql-5.6.14\my.ini"
启动服务
net start mysql-5.6.14
命令行登陆
bin\mysql -u root -p
中止服务
net stop mysql-5.6.14 【我没有将mysql目录添加到path中,但在cmd下也可直接使用net start/stop mysql 真不错】
删除服务
bin\mysqld --remove mysql-5.6.14
启动服务不经过注册
bin\mysqld --console
【略显鸡肋,运行以后cmd无法用了,关闭mysql服务的方法是关闭cmd窗口】中止服务不经过注册服务
bin\mysqladmin -u root shutdown
mysql --console 注意console前面是两个“-”,就由于这个我还觉得前面装的mysql没用呢,应该是这里搞错了;
下图中配置mysql的命令时,也要是两个“-”;
图 1 经过注册启动服务
图 2 不经过注册启动服务
若是在“经过注册启动服务”的过程当中出现以下错误:
C:\Windows\system32>net start mysql
mysql 服务正在启动 ...
mysql 服务没法启动。
系统出错。
发生系统错误 1067。
进程意外终止。
这是由于Windows防火墙阻拦,用“不经过注册启动服务”的方法,会弹出对话框,点击容许经过防火墙便可。
接下来就能够用“经过注册启动服务”的方法了。
①mysql命令大全(http://c.biancheng.net/cpp/u/mysql_ml/)
添加用户
//登陆MYSQL
@>mysql -u root -p
@>密码
//建立用户
mysql> insert into mysql.user(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系统权限表
mysql>flush privileges;
这样就建立了一个名为:phplamp 密码为:1234 的用户。//退出后登陆一下
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登陆成功(参考:http://www.cnblogs.com/aidd2008/archive/2009/04/16/1437609.html)
查看全部用户的权限
在root下输入: mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
(参考http://blog.csdn.net/lampsunny/article/details/7410662)
3.为用户受权
//登陆MYSQL(有ROOT权限)。我里我以ROOT身份登陆.
@>mysql -u root -p
@>密码
//首先为用户建立一个数据库(phplampDB)
mysql>create database phplampDB;
//受权phplamp用户拥有phplamp数据库的全部权限
@>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;
mysql>其它操做//若是想指定部分权限给一用户,能够这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘链接口令’;
权限1,权限2,…权限n表明select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户所有权限。
当数据库名称.表名称被*.*代替,表示赋予用户操做服务器上全部数据库全部表的权限。
用户地址能够是localhost,也能够是ip地址、机器名字、域名。也能够用’%'表示从任何地址链接。
‘链接口令’不能为空,不然建立失败。例如:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操做的权限,并设定口令为123。mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc全部表进行全部操做的权限,并设定口令为123。mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对全部数据库的全部表进行全部操做的权限,并设定口令为123。mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对全部数据库的全部表进行全部操做的权限,并设定口令为123。
建立用户:
命令:
1
|
CREATE USER
'username'
@
'host'
IDENTIFIED BY
'password'
;
|
说明:username – 你将建立的用户名, host – 指定该用户在哪一个主机上能够登录,若是是本地用户可用localhost, 如 果想让该用户能够从任意远程主机登录,可使用通配符%. password – 该用户的登录密码,密码能够为空,若是为空则该用户能够不须要密码登 陆服务器.
例子:
1
2
3
4
5
|
CREATE USER
'dog'
@
'localhost'
IDENTIFIED BY
'123456'
;
CREATE USER
'pig'
@
'192.168.1.101_'
IDENDIFIED BY
'123456'
;
CREATE USER
'pig'
@
'%'
IDENTIFIED BY
'123456'
;
CREATE USER
'pig'
@
'%'
IDENTIFIED BY
''
;
CREATE USER
'pig'
@
'%'
;
|
受权:
命令:
1
|
GRANT privileges ON databasename.tablename TO
'username'
@
'host'
|
说明: privileges – 用户的操做权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).若是要授予所 的权限则使用ALL.;databasename – 数据库名,tablename-表名,若是要授予该用户对全部数据库和表的相应操做权限则可用* 表示, 如*.*.
例子:
1
2
|
GRANT SELECT, INSERT ON
test
.user TO
'pig'
@
'%'
;
GRANT ALL ON *.* TO
'pig'
@
'%'
;
|
注意:用以上命令受权的用户不能给其它用户受权,若是想让该用户能够受权,用如下命令:
1
|
GRANT privileges ON databasename.tablename TO
'username'
@
'host'
WITH GRANT OPTION;
|
设置与更改用户密码
命令:
1
|
SET PASSWORD FOR
'username'
@
'host'
= PASSWORD(
'newpassword'
);
|
若是是当前登录用户用
1
|
SET PASSWORD = PASSWORD(
"newpassword"
);
|
撤销用户权限
命令:
1
|
REVOKE privilege ON databasename.tablename FROM
'username'
@
'host'
;
|
说明: privilege, databasename, tablename – 同受权部分.
例子
1
|
REVOKE SELECT ON *.* FROM
'pig'
@
'%'
;
|
注意: 假如你在给用户’pig’@'%’受权的时候是这样的(或相似 的):GRANT SELECT ON test.user TO ‘pig’@'%’, 则在使用 REVOKE SELECT ON *.* FROM ‘pig’@'%’;命令并不能撤销该用户对test数据库中user表的SELECT 操做. 相反,若是受权使用的是GRANT SELECT ON *.* TO ‘pig’@'%’;则 REVOKE SELECT ON test.user FROM ‘pig’@'%’;命令也不能撤销该用户对test数据库中user表的 Select 权限.
具体信息能够用命令SHOW GRANTS FOR ‘pig’@'%’; 查看.
删除用户
命令:
1
|
DROP USER ‘username’@'host’;
|
一个典型的数据库建表, 建用户过程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
建立用于localhost链接的用户并指定密码
mysql> create user
'pcom'
@
'localhost'
identified by
'aaa7B2249'
;
Query OK, 0 rows affected (0.00 sec)
建立数据库
mysql> create database pcom default character
set
utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
给本地用户受权, 这里不须要指定密码
mysql> grant all on pcom.* to
'pcom'
@
'localhost'
;
Query OK, 0 rows affected (0.00 sec)
给其余IP地址下的用户受权, 注意: 这里必须指定密码, 不然就能够无密码访问
mysql> grant all on pcom.* to
'pcom'
@
'192.168.0.0/255.255.0.0'
identified by
'aaa7B2249'
;
Query OK, 0 rows affected (0.00 sec)
同理
mysql> grant all on pcom.* to
'pcom'
@
'172.20.0.0/255.255.0.0'
identified by
'aaa7B2249'
;
Query OK, 0 rows affected (0.00 sec)
Done!
|