一.如何登陆mysql:
1.下载安装mysql数据库:( 我们以5.5版本为例进行学习)
注意:
(1)下载安装时文件路径中不要有中文,不然路径不能解析,安装会失败。
(2)一般的数据库软件中有很多插件,选择性的安装,一般只需要client,server,database
(3)在安装数据库的过程中会创建root用户及可以备选的用户,及密码。
2.登陆mysql:
(1)第一种方式(一般本地连接):通过client登陆,默认使用的是root用户,直接输入密码就可以登陆。如下图所示:
(2)第二种方式(本地或者远程连接):
以windows为例:在dos窗口中cd到mysql安装目录下的bin目录,然后输入一下命令
>mysql -hlocalhost -uroot -p123456
二.mysql数据库用户创建及权限管理:
1.创建用户并赋权限:
(1)第一种方式:grant命令
mysql>grant all privileges on *.* to username@hostname identified by 'password';
mysql>flush privileges; //权限修改之后一定要记得刷新系统权限表才能生效
格式:grant 权限 on 数据库.表 to 用户名@登录主机 identified by "密码";
通过grant命令可以创建用户同时分配权限,也可以给已有的用户赋权限,而且权限可以重复附加(第一次给查的权限,第二次给删的权限)
hostname如果用“%”表示所有的机器都可以连接此数据库。
(2)第二种方式:create user命令:
mysql>create user ‘jwang13’@'localhost' identified by 'jwang13';
mysql>flush privileges;
注:通过这种方式创建用户之后可以通过grant命令进行权限赋值。在创建用户时identified by password为可选项,不设置默认不用密码
(3)第三种方式:直接往user表中插入一条记录
mysql>insert into user (user,host,password,.......) values('jwang12','localhost',password('jwang12'),.......);
mysql>flush privileges;
然后通过grant命令给用户赋权限,这种方式一般很少用。
说明:user表中不同的数据库版本中字段的名字不太一致,比如password字段在高版本的user表中就没有,并且在插入时很多字段是默认不能为空的,所以在创建用户并赋权限的时候多采用第一种方式。
2.查看用户及主机:
mysql库中有一张user表,记录了用户的名称,主机,密码等信息
mysql>select user,host,password from user;
3.修改用户的密码:
(1)第一种方式:修改用户密码实际上就是根据主机和用户名来更改user表中的密码,如下图所示:
mysql>update mysql.user set password='jwang13' where user='jwang' and host='localhost';
mysql>flush privileges;
(2)第二种方式:在登陆时通过mysqladmin命令修改密码;
cd到mysql的安装bin目录,然后执行:
mysqladmin -u username -p password newpassword
Enter Password:*******
mysql -u username -p
Enter Password:******* 输入新密码回车即可进入数据库环境
4.删除用户信息:
(1)删除用户:这种方式只是删除了user表中的记录
mysql>Delete FROM user Where User='jwang' and Host='localhost';
mysql>flush privileges;
(2)删除账户及权限:这种方式清除了有关该用户的所有信息,包括权限信息
mysql>drop user 用户名@'%';
mysql>drop user 用户名@ localhost;
注意:如果只是删除了user表中的记录的话权限信息依然存在,如果重新添加一个用户和原先删除的用户一样的话,那他默认会拥有原先同名用户的权限信息。
5.mysql权限验证过程:
常识1:在mysql数据库中,有mysql_install_db脚本初始化权限表,存储权限的表有:
user,db,host,table_priv,columns_priv,proc_priv
常识2:MySQL存取控制包含2个阶段:
阶段1:服务器检查你是否允许连接。
阶段2:假定你能连接,服务器检查你发出的每个请求。看你是否有足够的权限实施某个具体的请求(如select)。
常识3:user表中有很多字段,大致分为3类:
(1)用户列:host,user,password(有的版本的user表中没有这个字段)
(2)权限控制列:select_priv,insert_priv等以priv结尾的字段
(3)安全控制列:ssl_type,ssl_cipher,x509_issuer,x509_subject(ssl用于加密,x509可以用来标识用户)
(4)资源控制列:max_questions:每小时可以允许有多少次查询
max_updates:每小时可以允许执行多少次更新
max_connections:每小时可以建立多少次链接
max_user_connects:单个用户可以同时具有的连接数。
注意:有的版本中没有password,而是多了几个与密码相关的字段。在使用insert into user方法新建用户时,user表中部分字段不能为空,要设置默认值。