zoukankan      html  css  js  c++  java
  • mysql & privileges

    alter table log_game_detail change levelType levelType int NULL;
    MYSQL建用户,建库,建表,授权

    Ubuntu上安装MySQL非常简单只需要几条命令就可以完成。

    1. sudo apt-get install mysql-server

    2. apt-get isntall mysql-client

    3.  sudo apt-get install libmysqlclient-dev

    安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后可以使用如下命令来检查是否安装成功:

    sudo netstat -tap | grep mysql

    通过上述命令检查之后,如果看到有mysql 的socket处于 listen 状态则表示安装成功

    1.新建用户
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //登录MYSQL
    @>mysql -u root -p
    @>密码
    //创建用户
    mysql> insert into mysql.user(Host,User,Password) values('localhost','tanzuai',password('123456'));
    //刷新系统权限表
    mysql>flush privileges;
    这样就创建了一个名为:tanzuai 密码为:123456 的用户。
     
    //退出后登录一下
    mysql>exit;
    @>mysql -u tanzuai -p
    @>输入密码
    mysql>登录成功

    2.为用户授权

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    //登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
    @>mysql -u root -p
    @>密码
    //首先为用户创建一个数据库(tanzuaidb)
    mysql>create database tanzuaidb;
    //授权jeecn用户拥有jeecn数据库的所有权限
    @>grant all on tanzuaidb.* to tanzuai@localhost identified by '123456';
    //刷新系统权限表
    mysql>flush privileges;
    mysql>其它操作
     
    //如果想指定部分权限给一用户,可以这样来写:
    mysql>grant select,update on tanzuaidb.* to tanzuai@localhost identified by 123456;
    //刷新系统权限表。
    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 tanzuai@10.163.225.87 identified by ‘123′;
    给来自10.163.225.87的用户tanzuai分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

    mysql>grant all on vtdc.* to tanzuai@10.10.10.87 identified by ‘123′;
    给来自10.163.225.87的用户tanzuai分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

    mysql>grant all on *.* to tanzuai@10.10.10.87 identified by ‘123′;
    给来自10.163.225.87的用户tanzuai分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

    mysql>grant all privileges on *.* to tanzuai@localhost identified by ‘123′;
    给本机用户tanzuai分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

    3.删除用户

    1
    2
    3
    4
    5
    6
    @>mysql -u root -p
    @>密码
    mysql>DELETE FROM user WHERE User=”jeecn” and Host=”localhost”;
    mysql>flush privileges;
    //删除用户的数据库
    mysql>drop database tanzuaidb;


    4.修改指定用户密码

    1
    2
    3
    4
    5
    @>mysql -u root -p
    @>密码
    mysql>update mysql.user set password=password(‘新密码’) where User=”tanzuai” and Host=”localhost”;
    mysql>flush privileges;
    mysql>quit;


    5.建表
    1
    2
    3
    4
    5
    6
    7
    8
    create table receive_user
    (
    waybillno varchar(20) not null check(waybillno!=''),
    model varchar(20) not null,
    userid varchar(20) not null,
    create_time datetime default null,
    primary key(waybillno)
    )engine=InnoDB default charset=utf8 auto_increment=1;

    1、默认Ubuntu自带的python,本机为Ubuntu12.04,默认python版本为2.7.3

    2、通过Ubuntu apt-get工具安装pip工具,git工具,tree工具;

    1) sudo apt-get install python-pip(pip install 类似apt-get工具)

    2) sudo apt-get install git(通过git可以从github上进行源码的下载)

    3) sudo apt-get install tree(查看目录工具)

    3、安装ipython由于自带的python不带提示功能,因此安装ipython后可以使得开发更方便;

    1)sudo apt-get install ipython

    4、通过pip安装django

    1)sudo pip install Django

    5、安装完成后会在/usr/local/lib/python2.7/dist-packages下:

    6、通过工具django-admin创建项目

     django-admin startproject mysite

    通过tree查看目录结构如下:

    .
    └── mysite
        ├── manage.py
        └── mysite
            ├── __init__.py
            ├── settings.py
            ├── urls.py
            └── wsgi.py

    7、执行如下命令进行验证:

    进入mysite中执行python manage.py runserver 0.0.0.0:8000

    8、然后再浏览器中输入本机ip:8000出现django工作页面

     

     

    看了上一篇博文的发布时间,到目前已经有三个月没更新博文了。这三个月经历了很多事情,包括工作、生活和感情等等。由于个人发展的原因,这个月准备换工作啦。在这段时间,我会把Web大型项目中所接触到的技术都总结出来,分享给各位支持我的博友。博客园是个好地方,在这里能学到很多东西,同时你也可以收获很多东西,就比如我本人,去年被两个比较大型的在线培训机构邀请当讲师(只接受了一家,当然由于太忙所以课程录制也不是特别多),另有一企业聘请我写一本技术相关的书籍(我拒了,没时间写)等等,这些都是我在博客园里得到的回报。所以还是要感谢博客园这个平台。

    好了,废话不多说,直接进入今天的知识分享。这次博文我将分享下MySQL的用户授权和bin-log日志,这博文是为下一篇 MySQL主从复制技术博文做准备的,本博文并不是理论解释这些技术,而是通过实战去应用这些技术,因为,理论的东西,百度一下就一大堆,而实际如何去应用的,或者百度上比较少,所以,我分享的技术都是理论+实战,让博友阅读完本文后,就能自己动手去做实验,让自己更深入彻底地理解好这些较为高级的技术。

    一、平台环境

    centos6.5、MySQL5.6.22。首先当然是要有自己的环境,我是在虚拟机上去模拟实验的,因为MySQL要实现主从复制,所以需要两个服务器环境,所以在虚拟机中,你可以克隆一份一模一样的服务器,如下图:

    我这里的服务器里已经提前安装好MySQL了,这里我就不演示去安装环境了。这里我已经正常进入两个服务器,然后启动了MySQL。(要是这些操作过程不懂,可以留言)到此我们就把环境都准备好了。

    二、MySQL用户授权

    由于我演示的是主从复制技术,所以我这里只讲解给从服务器设置授权用户,也就是只授权给从服务器连接到主服务器去。这里我的主服务器的IP是192.168.197.129,从服务器的IP的192.168.197.130。

    首先查看下主数据库服务器里的用户表,这里我们知道目前只有root用户,

    接着我们要添加一个新用户,然后只能是从服务器去连接:

    grant all privileges on *.* to kelly@192.168.197.130 identified by '123456';

    这里我解释下这句命令行的意思,grant all指的是授权所有操作权限(增删改查),*.*指的是所有数据库,kelly指的是用户名,123456是密码,192.168.197.130指的是所要授权的远程IP地址。整一句的意思是,创建一个用户kelly密码为123456,然后将此用户授权给远程IP为192.168.197.130可以访问,此用户可以访问主服务器里的所有数据库。

    接着我们实际操作一遍,

    然后我们在从服务器进行连接,再查看下是否 是主服务器的数据库:

    到此,我们已经完成了给从服务器授权,大家跟着上面一步步操作进行测试,我相信会成功的,若有问题可以留言。

     三、bin-log日志

    bin-log日志的定义和作用我就直接百度过来了,也很好理解的。

    基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;

    作用:可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、MySQL的复制(主主数据库的复制、主从数据库的复制)

    文件位置:默认存放位置为数据库文件所在目录下

    文件的命名方式: 名称为hostname-bin.xxxxx (重启mysql一次将会自动生成一个新的binlog)

    状态的查看:mysql> show variables like '%log_bin%';

    以上这些都是百度复制过来的,我们看完后也很好理解了,bin-log日志也就是二进制日志,只要数据发生改变(增删改),都是记录到日志里。所以我们可以通过bin-log日志进行数据恢复。

    1、开启big-log日志

    打开MySQL的配置文件:/etc/my.cnf(我这里的MySQL是放在/etc下的),

    在配置文件中添加此行代码: log-bin=mysql-bin,

    然后重启下MySQL:service mysqld restart

    进入数据库查看是否开启成功:mysql> show variables like '%log_bin%';

    接着我实际演示一次:

    根据介绍流程操作是成功的,大家要自己动手测试下。

    2、bin-log日志的使用

    首先我们来认识几个与bin-log相关的MySQL命令:

    flush logs; 会多一个最新的bin-log日志

    show master status; 查看最后一个bin-log日志的相关信息

    reset master; 清空所有的bin-log日志

    我们先看一下bin-log日志放在哪:

    这个时候我们进入到MySQL里,查看一下最后一个bin-log日志信息

    然后刷新一下bin-log日志,再查看下最后一个bin-log日志,此时已经变成了000002这个版本了,以后的增删改操作就记录在这个最新的bin-log日志里

    我们可以看一下bin-log日志存放的目录,这里就多出了新版本的bin-log日志000002,以后的操作都是记录在这里面了

    接着我们创建一个数据库,然后创建一个表,再插入一些记录,然后再查看下日志信息有没有变化

    接着我们再看下bin-log信息,此时位置已经发生了变化,也就是说已经对刚才的操作进行了记录。

    接着我们打开二进制日志,看看里面就是记录了什么,我们需要知道的是,如果用vi打开二进制日志的乱码的,所以我们需要使用下面的命令进行打开:

    /usr/local/mysql/bin/mysqlbinlog --no-defaults mysql-bin.000002

    我把打开的日志截图看看(截图太多了希望大家别介意,因为想让大家了解的更清楚),我用红色圈起来的都是我们需要注意的,end_log_pos大概的意思是这这个操作的最后位置在哪,例如:end_log_pos 400,在299-400之间是存了插入操作的记录的,insert into test1 values(1); 其他的能看懂就自己看,不懂看错就跳过也没事。

    下面我们来做一个利用二进制恢复数据库数据的操作。

    流程如下:

    (1)先生成一个新的日志文件(000003);

    (2)然后删除test1表的数据;

    (3)然后利用前一个日志恢复数据(000002);

    (4)最后查看是否恢复成功。

    具体如下:

    接着用mysql-bin.000002进行数据恢复:我们到数据库里查看下是否恢复成功了:

    这个时候,已经证明我们使用bin-log日志进行数据恢复成功了。

    在这里可能有博友就会问:“博主,你那实验在测试时是先刷新了个bin-log版本,假如我没刷新,然后删除语句就记录在了000002这个版本了,那么你怎么恢复啊?因为你使用000002进行恢复,也是会执行删除操作的记录的,这不是坑爹吗?”。

    没错,假如有博友能想到这个了,那说明上面所讲的知识点基本上理解了,并有自己去思考。这里我们当然有办法在一个有删除记录的bin-log日志进行数据恢复,你有想过为啥会有end-log-pos这个位置记录吗?这就是我们解决以上问题的方法之一:定位恢复,即恢复你想恢复的数据。我打个比方,在一个bin-log日志里,insert操作的end-log-pos为250,而delete的end-log-pos为300。那么,我们可以将数据恢复到250这个位置,而之后的操作就不恢复了,这里我们先看一下mysqlbinlog的常用参数:

    --stop-position = "100"    --start-position = "50" 根据开始位置或者结束位置来恢复自己想恢复的参数

    --stop-date= "2016-03-02 12:00:00"    --start-date= "2016-03-02 11:55:00" 根据开始日期时间或者结束位置来恢复自己想恢复的参数

    例如:

    /usr/local/mysql/bin/mysqlbinlog --no-defaults mysql-bin.000001 --stop-position="450"|mysql -uroot -p

    此句的意思就是将数据恢复到位置在450之前的就OK了,在450之后(假如后面还有操作记录)的就不需要进行恢复了。

    下面我通过实验操作一次:

    首先重置一下bin-log日志,让其恢复到初始状态

    接着插入几条数据,再删除些数据

    这个时候我们可以看一下mysql-bin.000001里的内容(这里我只截取一部分):

    由于我们知道删除的是大于2的数据,所以知道3和4被删除了,这里我们就恢复3和4(当然,假如误删了整个表,这里就恢复到删除操作之前的就可以了)执行如下命令:

    接着我们进入数据库查看下是否进行恢复成功:

    到此,bin-log日志的讲解已经告一段落。

    mysqladmin 工具的使用格式:
    mysqladmin [option] command [command option] command ......
    参数选项:
    -c number 自动运行次数统计,必须和 -i 一起使用
    -i number 间隔多长时间重复执行

    0)每个两秒查看一次服务器的状态,总共重复5次。
    [root@test-huanqiu ~]# mysqladmin -uroot -p -i 2 -c 5 status


    1)查看服务器的状况:status
    [root@test-huanqiu ~]# mysqladmin -uroot -p status

    2)修改root 密码:
    [root@test-huanqiu ~]# mysqladmin -u root -p原密码 password 'newpassword'

    3)检查mysqlserver是否可用:
    [root@test-huanqiu ~]# mysqladmin -uroot -p ping

    4)查询服务器的版本
    [root@test-huanqiu ~]# mysqladmin -uroot -p version

    5)查看服务器状态的当前值:
    [root@test-huanqiu ~]# mysqladmin -uroot -p extended-status

    6)查询服务器系统变量值:
    [root@test-huanqiu ~]# mysqladmin -uroot -p variables

    7)显示服务器所有运行的进程:
    [root@test-huanqiu ~]# mysqladmin -uroot -p processlist
    [root@test-huanqiu ~]# mysqladmin -uroot -p-i 1 processlist        //每秒刷新一次

    8)创建数据库
    [root@test-huanqiu ~]# mysqladmin -uroot -p create daba-test

    9)显示服务器上的所有数据库
    [root@test-huanqiu ~]# mysqlshow -uroot -p

    10)显示数据库daba-test下有些什么表:
    [root@test-huanqiu ~]# mysqlshow -uroot -p daba-test

    11)统计daba-test 下数据库表列的汇总
    [root@test-huanqiu ~]# mysqlshow -uroot -p daba-test -v

    12)统计daba-test 下数据库表的列数和行数
    [root@test-huanqiu ~]# mysqlshow -uroot -p daba-test -v -v

    13)删除数据库 daba-test
    [root@test-huanqiu ~]# mysqladmin -uroot -p drop daba-test

    14)重载权限信息
    [root@test-huanqiu ~]# mysqladmin -uroot -p reload

    15)刷新所有表缓存,并关闭和打开log
    [root@test-huanqiu ~]# mysqladmin -uroot -p refresh

    16)使用安全模式关闭数据库
    [root@test-huanqiu ~]# mysqladmin -uroot -p shutdown

    17)刷新命令mysqladmin flush commands
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-hosts
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-logs
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-privileges
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-status
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-tables
    [root@test-huanqiu ~]# mysqladmin -u root -ptmppassword flush-threads

    18)mysqladmin 执行kill 进程:
    [root@test-huanqiu ~]# mysqladmin -uroot -p processlist
    [root@test-huanqiu ~]# mysqladmin -uroot -p kill idnum

    19)停止和启动MySQL replication on a slave server
    [root@test-huanqiu ~]# mysqladmin -u root -p stop-slave
    [root@test-huanqiu ~]# mysqladmin -u root -p start-slave

    20)同时执行多个命令
    [root@test-huanqiu ~]# mysqladmin -u root -p process status version

    ***************当你发现自己的才华撑不起野心时,就请安静下来学习吧**
  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/johnsonliu3/p/8244593.html
Copyright © 2011-2022 走看看