Python学习—数据库篇之初识mysql

一、下载与安装

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

想要使用MySQL来存储并操作数据,则需要做几件事情:

a. 安装MySQL服务端
b. 安装MySQL客户端
c. 【客户端】连接【服务端】
d. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)

地址: http://dev.mysql.com/downloads/mysql/

1.根据自己计算机系统的相关版本,下载压缩包,解压到任意目录 

2.服务器端运行起来

  a.一直进入解压目录到bin文件夹的cmd窗口,执行命令:mysqld   (如果报找不到data文件夹错误,在与bin文件夹同级建立data文件夹)

  

  b.建立好data文件夹后,重新进入bin目录的cmd窗口中,执行初始化mysql命令:mysqld --initialize-insecure    (data文件夹中会多出许多文件)

  

   初始化后会创建一个默认用户root,无登录密码

  c.在当前窗口执行启动服务器命令:mysqld   (此时会hold住一个窗口,mysql服务器启动成功)

3.客户端实现连接

  重开一个到bin文件夹目录的cmd窗口,执行命令:mysql -u root -p   (-u代表用户名,-p代表密码,此时为初始化时创建的root用户,无密码)

  Enter password 时直接回车,就能进入mysql客户端界面

  

  输入show databases;就可以看到mysql内部的相关数据库

  

4.制作mysql的windows服务

在使用mysql时,需要先起一个服务器,再起一个客户端连接使用,如果关闭了服务器窗口,mysql也将无法使用;所以为了方便使用,可以将制作一个mysql的windows服务器,就可以随时使用mysql了。

  a.配置环境变量:【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】-->           【将MySQL的bin目录路径追加到变值值中,用 ; 分割】

  b.进入bin目录的cmd窗口,执行命令:mysqld --install   (如果要移除MySQL的Windows服务,执行此命令:mysqld --remove)

  c.注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:net start mysql          net stop mysql

二、用户管理 

 此前在初始化mysql时,我们创建了一个root用户,该用户实际上为超级管理员的角色,拥有最高的权限;我们可以通过操作mysql数据库中user表来对用户进行管理。使用root用户登录数据库后执行以下操作:

show databases;  -----  查看mysql的所有数据库

use mysql;  -----  使用mysql数据库

show tables;  -----  查看当前数据库所有的表

desc user;  -----  查看user表中的所有属性

select host,user from user;  -----  查看user表中的host和user属性值

可以看到,我们使用的root用户其实早已经记录在user表中了;那么如果我们想添加用户或者对原有的用户信息进行修改,是否可以直接使用sql语句中操作表的语句来实现呢?答案是可以的,但是考虑到user表的重要程度,一旦破坏了表中原有的数据,可能会对用户使用造成影响,因此,mysql有专门用于用户管理的特殊命令,且只对user表生效。

1.创建用户:create user 用户名@IP地址 identified by '密码';

 

 我们分别使用cdc用户和cdcy用户进行登录验证

    

    

 可以看到,cdc账号登陆成功,而cdcy账号登陆失败,其实原因就在于两者的host不同,如果在登录时不特意强调ip地址,都会默认为是本机登陆,因此对于不是本机的账号必      须声明其host地址

    

2.删除用户:drop user 用户名'@'IP地址;

3.修改用户:rename user 用户名@IP地址 to 新用户名@IP地址;

4.修改密码:set password for  用户名@IP地址  = Password('新密码')

 5.用户授权

我们分别使用root和alex登陆并查看数据库中的信息:

(root用户下)


(alex用户下)

可以看到,alex账号所查询到的信息并没有root用户所查询到的多,那是因为相比root用户,alex的权限较低。root用户可以将相关的权限授予其他用户。

例:将t对est数据库中class表的查询权限授予alex用户

(root用户下授权)

 (alex用户下)

show grants for '用户'@'IP地址'                  -- 查看权限
grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权
revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限
            all privileges  除grant外的所有权限
            select          仅查权限
            select,insert   查和插入权限
            ...
            usage                   无访问权限
            alter                   使用alter table
            alter routine           使用alter procedure和drop procedure
            create                  使用create table
            create routine          使用create procedure
            create temporary tables 使用create temporary tables
            create user             使用create userdrop user、rename user和revoke  all privileges
            create view             使用create view
            delete                  使用delete
            drop                    使用drop table
            execute                 使用call和存储过程
            file                    使用select into outfile 和 load data infile
            grant option            使用grant 和 revoke
            index                   使用index
            insert                  使用insert
            lock tables             使用lock table
            process                 使用show full processlist
            select                  使用select
            show databases          使用show databases
            show view               使用show view
            update                  使用update
            reload                  使用flush
            shutdown                使用mysqladmin shutdown(关闭MySQL)
            super                   􏱂􏰈使用change master、kill、logs、purge、master和set global。还允许mysqladmin􏵗􏵘􏲊􏲋调试登陆
            replication client      服务器位置的访问
            replication slave       由复制从属使用
关于权限
        对于目标数据库以及内部其他:
            数据库名.*           数据库中的所有
            数据库名.表          指定数据库中的某张表
            数据库名.存储过程     指定数据库中的存储过程
            *.*                所有数据库
        
        示例:
         grant select on test.* to alex@localhost;  --alex可以查询test所有的表
         grant select on *.* to alex@localhost;  --alex可以查询所有数据库的所有的表
对于数据库
用户名@IP地址         用户只能在改IP下才能访问
            用户名@192.168.1.%   用户只能在改IP段下才能访问(通配符%表示任意)
            用户名@%             用户可以再任意IP下访问(默认IP地址为%)


示例:
 grant select on test.class to "alex"@"10.45.134.%";  
 grant select on test.class to "alex"@"%";
注:%为特殊符号,使用时加双引号
对于用户和IP

特殊的:flush privileges;  --将数据读取到内存中,从而立即生效。

# 启动免授权服务端
mysqld --skip-grant-tables

# 客户端
mysql -u root -p

# 修改用户名密码
update mysql.user set authentication_string=password('666') where user='root';
flush privileges;
忘记密码

 

posted @ 2019-03-04 23:00  cdcx  阅读(394)  评论(0编辑  收藏  举报