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

    ***************当你发现自己的才华撑不起野心时,就请安静下来学习吧**
  • 相关阅读:
    spring-data-elasticsearch (elasticsearch 6.7.0) @Document 和 @Field 注解详解
    干货链接(大神)
    Excel word PDF导入导出 Easy POI
    helm 源大集合
    K8s学习干货
    K8S
    阳明大神---容器时代
    K8s高可用集群部署
    最小 docker_lpnm系统
    python 协程和异步编程全解
  • 原文地址:https://www.cnblogs.com/johnsonliu3/p/8244593.html
Copyright © 2011-2022 走看看