虽然本电脑配置还可以,但我总有点脑袋抽筋,不想多装软件拖慢电脑速度。
和数据库相关的本机已有WampServer和navicat(现在不搞php,wamp可以卸载了,navicat挺好用的,觉得太大的话可以试试小工具SQL-Front),现如今需要搞Java的mysql使用,便不得不装mysql了。
不知什么时候下载的mysql安装包有30+M,现在官方版的得200M吧http://dev.mysql.com/downloads/mysql;
小安装包安装过程很顺利,确定按钮没有显示出配置对话框,cd到bin目录下也完全用不了,卧槽,这什么软件!!
装mysql官方绿色版算了
下载得到mysql-noinstall-5.1.57-win32.zip(115M,某网盘下得),解压
最常用子目录:
bin 包含mysql的启动、停止等各种操作命令文件;
data数据库存放目录;
Docs包含了mysql的文档;
5个ini文件分别表示不同级别的mysql配置文件;
http://hi.baidu.com/lomgzhu/item/a7c976f126e802713c198b6f
1、下载mysql(免安装版)
http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.14-win32.zip
减压到一个指定目录下。例如:E:\Program Files (x86)\mysql-5.6.14
2、配置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
3、配置服务
管理员身份执行注册服务(这里如果没有配置环境变量的话,需要进入到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 [email protected] identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。mysql>grant all privileges on vtdc.* to [email protected] identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。mysql>grant all privileges on *.* to [email protected] 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!
|