数据库安装了之后,如何去连接数据库,创建用户呢?下面,我们以使用命令执行的方式来介绍 Mysql 的常用操作。
1、 连接MySQL
① 连接到本机上的Mysql。
首先打开DOS窗口,进入Mysql的安装目录 mysql\bin 下,键入命令:
mysql -uroot -pdir13652
-u 后接用户名,可以有空格、也可以没有, -p 后接密码,必须没有空格
② 连接到远程主机上的Mysql。
假设远程主机ip 为 192.168.1.1,用户名为root,密码为 dir13652 ,则键入命令:
mysql -h192.168.1.1 -uroot -pdir13652
③ 退出mysql 连接: exit
2、修改root用户密码
mysql 默认安装后,生成一个超级用户:root , 给root 用户设置密码的方法有:
A) mysqladmin -uroot -p dir13652 password ‘newpassword’; B) update user set password=password(’newpassword’) where user=’root’;
3、增加新用户
在连接Mysql之后,目前还未使用任何数据库,需要切换到要使用的数据库。
用户管理在MySQL 自带数据库 mysql 的 user 表
mysql> use mysql; #
切换到数据库
mysql> select host,user,password from user; #
可以查看数据库中的用户。
① 创建用户
mysql> create user ppnie identified by 'ppnie123'; #
创建用户,identified by 会将纯文本密码加密作为散列值存储。
你也可以使用Grant语句增加新用户:
mysql> GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'something' WITH GRANT OPTION; //admin
用户授权通过本地机(localhost)访问,WITH GRANT OPTION 是权限允许传播
mysql> GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'something' WITH GRANT OPTION; //授予admin用户从任何其它主机发起的访问(通配符%)
mysql> grant select,update,delete on mysql.* to ppnie identified by 'ppnie'; //
默认通配符为%,你还可以直接在 mysql.user 中插入数据还新增用户。
② 更改用户
mysql> rename user ppnie to ppnie123; #
更改用户ppnie 为ppnie123
③ 更改用户密码
mysql> set password for ppnie123 = password('ppnie'); #
更改用户ppnie123的密码为 ppnie
mysql> update mysql.user set password=password('ppnie123') where user='ppnie123';
4、给用户赋权限
语句:grant select [,delete,update,insert] on 数据库名.表名 to 用户
如:
grant select on mysql.user to ppnie123; grant select,update,delete on *.* to ppnie123; # *.*
表示所有数据库的所有表
grant all privileges on *.* to ppnie123; #
所有权限
移除用户的某个权限
语句: revoke 权限 on 数据库名.表名 from 用户
如:
revoke select on mysql.user from ppnie123;
如果想立即看到结果使用flush privileges ;命令更新,或重启数据库
设置权限时必须给出一下信息
1,要授予的权限
2,被授予访问权限的数据库或表
3,用户名
grant和revoke可以在几个层次上控制访问权限
1,整个服务器,使用 grant ALL 和revoke ALL
2,整个数据库,使用on database.*
3,特点表,使用on database.table
4,特定的列
5,特定的存储过程
实例演示:
mysql> show grants for ppnie123; //
查看用户权限
+---------------------------------------------------------------------------------------------------------+ Grants for ppnie123@% +---------------------------------------------------------------------------------------------------------+ GRANT USAGE ON *.* TO 'ppnie123'@'%' IDENTIFIED BY PASSWORD '*6A16440239A35FB9130A2B543AAE506BBF9C5D0E' +---------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Usage 无权限
使用用户ppnie123 连接数据库
>mysql -uppnie123 -pppnie mysql> show databases; //
显示当前用户的数据库
+--------------------+ Database +--------------------+ information_schema +--------------------+ 1 row in set (0.06 sec)
查询数据库 mysql下的表
mysql> select user from mysql.user; //
查询数据库mysql下的表,结果显示无权限
ERROR 1142 (42000): SELECT command denied to user 'ppnie123'@'localhost' for table 'user'
使用root 用户连接数据库
mysql> grant select on mysql.user to ppnie123; //
给ppnie123 赋予查询mysql.user 表的权限
Query OK, 0 rows affected (0.04 sec)
再一次连接ppnie123 用户,查询权限
mysql> show grants for ppnie123; +---------------------------------------------------------------------------------------------------------+ Grants for ppnie123@% +---------------------------------------------------------------------------------------------------------+ GRANT USAGE ON *.* TO 'ppnie123'@'%' IDENTIFIED BY PASSWORD *6A16440239A35FB9130A2B543AAE506BBF9C5D0E' GRANT SELECT ON `mysql`.`user` TO 'ppnie123'@'%' +--------------------------------------------------------------------------------------------------------+
你会发现用户可以查询 mysql.user 表了。