您的位置:新葡亰496net > 网络数据库 > 新葡亰496net:三十一日攻读记录,MYSQL不能连接

新葡亰496net:三十一日攻读记录,MYSQL不能连接

发布时间:2019-06-20 12:58编辑:网络数据库浏览(105)

    MySQL

    官网:‘

    最新版本8.0.11

    Windows

    %xxx >> 变量

    初始化MySQL服务器:

    mysqld --initialize --console
    

    启动/关闭MySQL服务器:

    net start mysql / net stop mysql
    

    MySQL修改用户密码:

    set password for '%user'@'localhost' = '%newpassword';
    

    MySQL创建数据库:

    create database %name;
    

    MySQL删除数据库:

    drop database %name;
    

    切换到其他数据库:

    use %name;
    

    第一次安装MySQL时有很多的坑,慢慢踩~

     

    DOS

    netstat -ano | findstr %str

    类似于linux下

    netstat -antup | grep %str

     

    Windows查看本机端口使用情况


    netstat -nab

    解决方法:(以下内容为本人亲自实践原创)

    Linux系统与数据库安全

    以下的文章主要介绍的是ubuntu 彻底删除MySQL数据库,以及删除MySQL数据库之后对MySQL的重装与删除MySQL的实际操作步骤,如果你对其实际操作感兴趣的话,你就可以浏览以下的文章了。

    JDBC连接错误 Cannot create PoolableConnectionFactory (Unknown host specified )


    jdbc:oracle:thin:@localhost:1521:xe
    这种方式用于本地连接没有问题,但是远程连接需要在@后面添加//
    jdbc:oracle:thin:@//192.168.2.1:1521/XE

    总结一下,应该是连接数的问题,那么服务器上有些什么连接数:

     

    sudo apt-get autoremove --purge MySQL-server-5.0  sudo apt-get remove MySQL-server  sudo apt-get autoremove MySQL-server  sudo apt-get remove MySQL-common  
    

    MySQL导出数据库结构


    1. mysqldump -uroot -p -d databasename > createtab.sql
    2. mysqldump -uroot -p -d databasename test1 test2 test3 > createtab.sql
    3. mysqldump YourDatabaseName --user=YourUserName --password=YourPassword

    参考文章:mysql导出表结构

    1、IIS网站服务器中各个网站中有“连接超时时间”,“会话超时时间”;
    2、其它程序占用的服务器连接数(如SMTP服务在发信出去的时候可能有很多个连接数)
    3、服务器本身的TCP/IP连接数,如xp系统就有个限制,不过server 2003系统似乎没这个限制。

    1. 帐号安全

    这个很重要上面的其实有一些是多余的。

    使用mysqldump命令遇到 mysqldump unkown option '--no-beep' 错误


    删除my.ini [client]下的 no-beep 参数;
    参考文章: 'mysqldump: unknown option '--no-beep' 错误解决'

    解决操作:

    帐号权限安全

    清理残留数据

    复制MySQL数据库 转自MySQL快速复制数据库的方法


    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的MySQL数据库。使用以下方法,可以非常简单地实现。
    假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:

    1. 首先创建新的数据库newdb
    #mysql
     -u root -ppassword
    
    mysql>CREATE
     DATABASE `newdb` DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
    
    1. 使用mysqldump及mysql的命令组合,一次性完成复制
    #mysqldump
     db1 -u root -ppassword --add-drop-table | mysql newdb -u root -ppassword
    

    3.以上是在同一台MySQL服务器上复制数据库的方法。如果要复制到远程另一台MySQL服务器上,可以使用mysql的“ -h 主机名/ip”参数。前提是mysql允许远程连接,且远程复制的传输效率和时间可以接受。

    #mysqldump
     db1 -uroot -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -uroo
    

    1、我的服务器上面有几个网站,其中有个网站有个自动发信的功能,用“netstat -na >>a.xls”命令查看到服务器25端口和客户端的连接数竟然有4077个,问了一下程序员,写程序的时候允许一个客户端ip发起10个连接,这样极大的消耗了服务器的连接资源,程序员把连接改成了一个ip只允许发起5个连接,现在没出问题的时候再查看,只有2312个连接了,不知道是不是这个的功劳呢?
    2、在IIS中对使用mysql数据库的网站进行设置:把“连接超时”时间由默认的120s改成60s; 再一个地方是“主目录”—“配置”—会话超时时间由20分钟改成2分钟。
    目前服务器成功的运行超过了2个晚上没出问题。

     

    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 
    

    您可能感兴趣的文章:

    • php无法连接mysql数据库的正确解决方法
    • IPv6设置后如何解决MySQL无法连接localhost的问题
    • mysql 无法连接问题的定位和修复过程分享
    • php后台经常提示无法连接mysql 刷新后又可以访问的解决方法
    • KB967723造成MySQL频繁无法连接
    • 远程无法连接SQL2000及MySQL的原因和解决办法

    1.1. Shell 安全

    安装 MySQL数据库

     

    sudo apt-get install MySQL-serversudo apt-get install MySQL-clientsudo apt-get install php5-MySQL  
    

    需求:限制用户权限,仅提供一些linux常用命令,用户监控linux系统于网络运行情况,不允许用户ssh登录后随意运行linux命令

    安装php5-MySQL数据库 是将php和MySQL连接起来一旦安装完成,MySQL 服务器应该自动启动。您可以在终端提示符后运行以下命令来检查 MySQL 服务器是否正在运行:sudo netstat -tap | grep MySQL

     

    当您运行该命令时,您可以看到类似下面的行:

    用户不能进入到Shell环境

    tcp 0 0 localhost.localdomain:MySQL *:* LISTEN -  
    

     

    如果服务器不能正常运行,您可以通过下列命令启动它:

    例如普通用户一旦登录web服务器可以看到web程序中的数据库配置

    sudo /etc/init.d/MySQL restart  
    

     

    进入MySQL

    用户可以了解OS工作状态如内存,cpu,网络等等

    $MySQL -uroot -p 管理员密码

     

    配置 MySQL数据库 的管理员密码:

    例如:ping, tracepath, top, free, netstat

    sudo MySQLadmin -u root password newpassword 
    

     

    以上的相关内容就是对ubuntu 彻底删除 MySQL数据库 然后重装 MySQL删除 MySQL的介绍,望你能有所收获。

    可以查看系统部分日志

    彻底删除MySQL数据库,以及删除MySQL数据库之后对MySQL的重装与删除MySQL的实际操作步骤,如果你对其实际操作...

     

    例如:access.log, error.log, php-error.log ...

     

    使用mgmt替代bash

     

    #!/bin/bash

    TITLE="Client"

     

    #USER=$(whiptail --inputbox "User:" 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

     

    #PASSWD=$(whiptail --title "$TITLE" --passwordbox "Passsword:" 8 60 3>&1 1>&2 2>&3)

     

    COMMAND=$(whiptail --title "$TITLE" --menu "Administrator Tools" 22 50 10

    "ping" "ping"

    "tracepath" "tracepath"

    "top" "top"

    "free" "free"  

    "ps" "ps"  

    "netstat" "netstat"  

    "lsof" "lsof"  

    "iftop" "iftop"  

    "log" "log"

    3>&1 1>&2 2>&3)

     

    function option(){

    OPTION=$(whiptail --inputbox "COMMAND-LINE Options: " 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

    }

     

    function weblog(){

    LOG=$(whiptail --title "$TITLE" --menu "Logs" 22 50 8

    "/var/log/messages" "message"  

    "/var/log/syslog" "syslog"  

    "/var/log/nginx/access.log" "access.log"

    "/var/log/nginx/error.log" "error.log"  

    3>&1 1>&2 2>&3)

     

    }

     

    case $COMMAND in

    ping)

        option

        $COMMAND $OPTION

        ;;

    tracepath)

        option

        $COMMAND $OPTION

        ;;

    free)

        $COMMAND -m

        read

        ;;

    top|iftop)

        $COMMAND

        ;;

    log)

        weblog

        tail -f $LOG

        ;;

    ps|lsof)

        option

        $COMMAND $OPTION

        read

        ;;

    netstat)

        option

        $COMMAND $OPTION

        read

        ;;

    *)

        exit $?

    esac

    Shell 启动文件,主要用户隐藏 /srv/sbin/mgmt 文件(针对菜鸟)

     

    $ cat shell.c

    #include <stdlib.h>

    main()

    {

    for (;;){

    system("/srv/sbin/mgmt");

    }

    }

    编译.c文件

     

    gcc shell.c -o /bin/nsh

    添加Shell到/etc/shells

     

    echo /bin/nsh >> /etc/shells

    将用户shell更改为我们刚刚创建的nsh

     

    $ vim /etc/passwd

     

    www:x:33:33:www:/var/www:/bin/nsh

    现在来作一个测试,如果正确应该现在为下面的TUI界面

     

    ssh [email protected]

     

                  ┌───────────────────┤ Client ├───────────────────┐

                  │ Administrator Tools                            │

                  │                                                │

                  │               ping      ping                   │

                  │               tracepath tracepath              │

                  │               top       top                    │

                  │               free      free                   │

                  │               ps        ps                     │

                  │               netstat   netstat                │

                  │               lsof      lsof                   │

                  │               iftop     iftop                  │

                  │               log       log                    │

                  │                                                │

                  │                                                │

                  │           <Ok>               <Cancel>          │

                  │                                                │

                  └────────────────────────────────────────────────┘

    提示

     

    这里采用的方式是给用户提供一个界面的方式,另外还有更好的方案,你可以些一个Shell的外壳,你需要实现

     

    与Shell相同的提示符

     

    提供TAB补齐

     

    上下光标键翻看历史命令,左右光标改变位置,Home/End 键到行首与行尾

     

    Ctrl R 搜索, Ctrl D 退出

     

    Ctrl S,Ctrl Q 等等

     

    流程

     

    用户输入 -> 关键字过滤 -> 放行

    例如用户输入 cd / 经过过滤器后, cd /home/usr/

     

    例如用户输入 cd /aaa 经过过滤器后, cd /home/usr/aaa

     

    rm -rf /usr/local 提示拒绝等等

     

    我已经使用python实现上面的大部分功能(因为python受到很多限制)如果使用C可以100%实现,需要你的想想力了

     

    1.2. .history 文件

     

    SA的操作记录问题

     

    通过~/.bash_history文件记录系统管理员的操作记录,定制.bash_history格式

     

    HISTSIZE=1000

    HISTFILESIZE=2000

    HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "

    export HISTTIMEFORMAT

    看看实际效果

     

    $ history | head

        1  2012-02-27-09:10:45 do-release-upgrade

        2  2012-02-27-09:10:45 vim /etc/network/interfaces

        3  2012-02-27-09:10:45 vi /etc/network/interfaces

        4  2012-02-27-09:10:45 ping www.163.com

    1. 临时文件安全

    临时文件不应该有执行权限

     

    /tmp

     

    /dev/sda3 /tmp ext4 nosuid,noexec,nodev,rw 0 0

    同时使用符号连接将/var/tmp 指向 /tmp

     

    /dev/shm

     

    none /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0

    1. 其他安全问题

    /etc/sudoers

     

    Cmnd_Alias WEBMASTER = /usr/local/webserver/nginx/sbin/nginx, /usr/local/webserver/php/sbin/php-fpm, !/usr/local/webserver/mysql/bin/*

    www localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER

     

    Cmnd_Alias Database = /usr/bin/mysqldump, /srv/mysql/bin/mysql, /u01/oracle/10.x.x/bin/sqlplus

    oralce localhost = NETWORKING, SERVICES, DELEGATING, PROCESSES, WEBMASTER, Database

    使用www用户测试登录,无误后修改SSH配置文件,禁止root登录。

     

    vim /etc/ssh/sshd_config

    PermitRootLogin no

    然后在测试从www su 到root

     

    4. 

    封锁22等端口,避免相互跳转

     

    lokkit --enabled

    iptables -F

    iptables -A OUTPUT -p tcp -m multiport --dports 22,21,2049 -j REJECT

    /etc/init.d/iptables save

    iptables -L -n

    web 服务器禁止使用ssh,作为跳板机

     

    用户将不能使用ssh命令登陆到其他电脑

     

    1. 数据库安全

    我们以MySQL为例,讲解怎样控制DBA权限。稍加修改即可用于oracle等服务器

     

    DBA 没有系统SSH帐号,只有数据库帐号

     

    系统管理员只能有SSH系统帐号,没有数据库帐号

     

    DBA 可备份数据库,还原数据库指定的备份文件,但是接触不到备份文件

     

    DBA 有权重启数据库以及修复损坏库/表文件,通过工具完成,而不是登录SSH运行命令

     

    5.1. 数据库程序安全

     

    rpm, deb 等等包安装mysql后默认权限是 755

     

    $ ll /usr/bin/mysql*

    -rwxr-xr-x 1 root root  132132 2012-02-28 01:33 /usr/bin/mysql*

    -rwxr-xr-x 1 root root  111572 2012-02-28 01:31 /usr/bin/mysqlaccess*

    -rwxr-xr-x 1 root root   32468 2012-02-28 01:33 /usr/bin/mysqladmin*

    -rwxr-xr-x 1 root root 2030768 2011-09-14 23:04 /usr/bin/mysql-admin*

    lrwxrwxrwx 1 root root      10 2012-02-28 01:33 /usr/bin/mysqlanalyze -> mysqlcheck*

    -rwxr-xr-x 1 root root  147288 2012-02-28 01:33 /usr/bin/mysqlbinlog*

    -rwxr-xr-x 1 root root   12006 2012-02-28 01:31 /usr/bin/mysqlbug*

    -rwxr-xr-x 1 root root   24940 2012-02-28 01:33 /usr/bin/mysqlcheck*

    -rwxr-xr-x 1 root root  451016 2012-02-28 01:33 /usr/bin/mysql_client_test*

    -rwxr-xr-x 1 root root 7246484 2012-02-28 01:33 /usr/bin/mysql_client_test_embedded*

    -rwxr-xr-x 1 root root    4245 2012-02-28 01:31 /usr/bin/mysql_convert_table_format*

    -rwxr-xr-x 1 root root   23943 2012-02-28 01:31 /usr/bin/mysqld_multi*

    -rwxr-xr-x 1 root root   16642 2012-02-28 01:32 /usr/bin/mysqld_safe*

    -rwxr-xr-x 1 root root  101636 2012-02-28 01:33 /usr/bin/mysqldump*

    -rwxr-xr-x 1 root root    7402 2012-02-28 01:31 /usr/bin/mysqldumpslow*

    -rwxr-xr-x 1 root root    3315 2012-02-28 01:31 /usr/bin/mysql_find_rows*

    -rwxr-xr-x 1 root root    1261 2012-02-28 01:31 /usr/bin/mysql_fix_extensions*

    -rwxr-xr-x 1 root root    5834 2012-02-28 01:31 /usr/bin/mysql_fix_privilege_tables*

    -rwxr-xr-x 1 root root   32477 2012-02-28 01:31 /usr/bin/mysqlhotcopy*

    -rwxr-xr-x 1 root root   24584 2012-02-28 01:33 /usr/bin/mysqlimport*

    -rwxr-xr-x 1 root root   14657 2012-02-28 01:31 /usr/bin/mysql_install_db*

    lrwxrwxrwx 1 root root      10 2012-02-28 01:33 /usr/bin/mysqloptimize -> mysqlcheck*

    -rwxr-xr-x 1 root root 2006884 2011-09-14 23:04 /usr/bin/mysql-query-browser*

    lrwxrwxrwx 1 root root      10 2012-02-28 01:33 /usr/bin/mysqlrepair -> mysqlcheck*

    -rwxr-xr-x 1 root root   39016 2012-02-28 01:32 /usr/bin/mysqlreport*

    -rwxr-xr-x 1 root root    8066 2012-02-28 01:31 /usr/bin/mysql_secure_installation*

    -rwxr-xr-x 1 root root   17473 2012-02-28 01:31 /usr/bin/mysql_setpermission*

    -rwxr-xr-x 1 root root   23716 2012-02-28 01:33 /usr/bin/mysqlshow*

    -rwxr-xr-x 1 root root   45884 2012-02-28 01:33 /usr/bin/mysqlslap*

    -rwxr-xr-x 1 root root  208148 2012-02-28 01:33 /usr/bin/mysqltest*

    -rwxr-xr-x 1 root root 6960852 2012-02-28 01:33 /usr/bin/mysqltest_embedded*

    -rwxr-xr-x 1 root root 1334028 2012-02-28 01:33 /usr/bin/mysql_tzinfo_to_sql*

    -rwxr-xr-x 1 root root   64728 2012-02-28 01:33 /usr/bin/mysql_upgrade*

    -rwxr-xr-x 1 root root  149836 2012-02-28 01:33 /usr/bin/mysql_waitpid*

    -rwxr-xr-x 1 root root    2108 2012-02-22 01:28 /usr/bin/mysql-workbench*

    -rwxr-xr-x 1 root root 9885312 2012-02-22 01:29 /usr/bin/mysql-workbench-bin*

    -rwxr-xr-x 1 root root    3888 2012-02-28 01:31 /usr/bin/mysql_zap*

    从安全角度考虑我们需要如下更改

     

    chown mysql:mysql /usr/bin/mysql*

    chmod 700 /usr/bin/mysql*

    mysql用户是DBA专用用户

     

    5.2. 数据库客户端安全

     

    DBA不需要通过SSH登录数据库服务器,然后运行mysql/sqlplus在登录数据库

     

    5.2.1. bind-address

     

    如果web与database 在一台机器上

     

    bind-address = 127.0.0.1

    5.2.2. mysql 管理

     

    $ cat ../database/mysqltui

    #!/bin/bash

    TITLE="MySQL Client"

     

    HOST=$(whiptail --title "$TITLE" --menu "MySQL Host" 22 50 8

    "127.0.0.1" "localhost"

    "172.16.0.1" "MySQL Master"

    "172.16.0.2" "MySQL Slave 1"

    "172.16.0.3" "MySQL Slave 2"  

    3>&1 1>&2 2>&3)

     

     

     

    USER=$(whiptail --inputbox "MySQL User:" 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

     

    PASSWD=$(whiptail --title "$TITLE" --passwordbox "MySQL Password:" 8 60 3>&1 1>&2 2>&3)

     

    #DATABASE=$(mysqlshow -h$HOST -u$USER | egrep -o "|w(.*)w|" | grep -v "Databases" |awk '{print """$1"" ""$1"""}')

    #DATABASE=$(mysqlshow -h$HOST -u$USER | egrep -o "|w(.*)w|" | grep -v "Databases" |awk "{print "$1" "$1"}")

     

    #DB=$(whiptail --title "$TITLE" --menu "MySQL DATABASE" 22 50 8 $DATABASE  3>&1 1>&2 2>&3)

     

    DATABASE=$(whiptail --inputbox "MySQL Database:" 8 60 --title "$TITLE" 3>&1 1>&2 2>&3)

     

    echo $HOST $USER $PASSWD $DATABASE

     

    mysql -h$HOST -u$USER -p$PASSWD $DATABASE

    ┌───┤ MySQL Adminstrator ├───┐

                 │ Menu                       │

                 │                            │

                 │       1 MySQL Manager      │

                 │       2 MySQL Backup       │

                 │       2 MySQL Restore      │

                 │                            │

                 │                            │

                 │    <Ok>        <Cancel>    │

                 │                            │

                 └────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ Database Host                        │

            │                                      │

            │        127.0.0.1  localhost          │

            │        172.16.0.1 mysql master       │

            │        172.16.0.2 mysql slave        │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    /etc/php5/fpm/pool.d/www.conf

     

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ User                                 │

            │                                      │

            │ root________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

     

            ┌────────┤ MySQL Adminstrator ├────────┐

            │ Password                             │

            │                                      │

            │ ****________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    进入mysql客户端

     

    Welcome to the MySQL monitor.  Commands end with ; or g.

    Your MySQL connection id is 503

    Server version: 5.1.58-1ubuntu1 (Ubuntu)

     

    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

    This software comes with ABSOLUTELY NO WARRANTY. This is free software,

    and you are welcome to modify and redistribute it under the GPL v2 license

     

    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

     

    mysql>

    安全提示

     

    从安全角度看,你可以去掉输入密码的过程。在终端提示符下输入

     

    Enter password:

     

    还可以写入~/.my.conf文件

     

    这样ssh [email protected]的时候输入第一道密码,然后进入mysql不需要输入密码

     

    如果需要输入密码对话到建议删除.bash_history

     

    rm -rf .bash_history

     

    ln -s /dev/null .bash_history

     

    5.2.3. ~/.mysql_history

     

    通过~/.mysql_history文件记录DBA操作记录

     

    插入时间点,在~/.bashrc中加入下面命令

     

    cat >> ~/.bashrc <<EODdd

    echo `date` >> ~/.mysql_dhistory

    EOD

    $ tail ~/.bashrc

    echo `date` >> ~/.mysql_history

    查看实际效果

     

    $ tail ~/.mysql_history

    EXPLAIN SELECT * FROM stuff where id=3 G

    EXPLAIN SELECT * FROM stuff where id='3' G

    EXPLAIN SELECT * FROM stuff where id='2' G

    Mon Feb 27 09:15:18 CST 2012

    EXPLAIN SELECT * FROM stuff where id='2' and created = '2012-02-01' G

    EXPLAIN SELECT * FROM stuff where id='1' and created = '2012-02-01' G

    EXPLAIN SELECT * FROM stuff where id='3' and created = '2012-02-01' G

    EXPLAIN SELECT * FROM stuff where id='2' and created = '2012-02-01' G

    EXPLAIN SELECT * FROM stuff where id='2' or created = '2012-02-01' G

    EXPLAIN SELECT * FROM stuff where id='2' and created = '2012-02-01' G

    Mon Feb 27 11:48:37 CST 2012

    5.3. mysqldump 安全

     

    5.3.1. 数据备份

     

    MySQL Client

                 ┌───┤ MySQL Adminstrator ├───┐

                 │ Menu                       │

                 │                            │

                 │       1 MySQL Manager      │

                 │       2 MySQL Backup       │

                 │       2 MySQL Restore      │

                 │                            │

                 │                            │

                 │    <Ok>        <Cancel>    │

                 │                            │

                 └────────────────────────────┘

    MySQL Client

            ┌────────┤ MySQL Adminstrator ├────────┐

            │ Database Host                        │

            │                                      │

            │        127.0.0.1  localhost          │

            │        172.16.0.1 mysql master       │

            │        172.16.0.2 mysql slave        │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ User                                 │

            │                                      │

            │ root________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

     

            ┌────────┤ MySQL Adminstrator ├────────┐

            │ Password                             │

            │                                      │

            │ ****________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ Backup File Name                     │

            │                                      │

            │ 2010-12-12.01:00:00_________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │                                      │

            │ Backup?                              │

            │                                      │

            │                                      │

            │        <Yes>           <No>          │

            │                                      │

            └──────────────────────────────────────┘

    5.3.2. 数据恢复

     

    MySQL Client

                 ┌───┤ MySQL Adminstrator ├───┐

                 │ Menu                       │

                 │                            │

                 │       1 MySQL Manager      │

                 │       2 MySQL Backup       │

                 │       2 MySQL Restore      │

                 │                            │

                 │                            │

                 │    <Ok>        <Cancel>    │

                 │                            │

                 └────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ Database Host                        │

            │                                      │

            │        127.0.0.1  localhost          │

            │        172.16.0.1 mysql master       │

            │        172.16.0.2 mysql slave        │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ Backup History                       │

            │                                      │

            │        1  2010-12-03 03:00:00        │

            │        2  2012-01-01 02:00:00        │

            │        3  2012-02-01 02:00:00        │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │ User                                 │

            │                                      │

            │ root________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

     

            ┌────────┤ MySQL Adminstrator ├────────┐

            │ Password                             │

            │                                      │

            │ ****________________________________ │

            │                                      │

            │       <Ok>           <Cancel>        │

            │                                      │

            └──────────────────────────────────────┘

    ┌────────┤ MySQL Adminstrator ├────────┐

            │                                      │

            │ Restore?                             │

            │                                      │

            │                                      │

            │        <Yes>           <No>          │

            │                                      │

            └──────────────────────────────────────┘

    5.4. crontab 定时备份脚本于安全

     

    网上备份脚本很多,但考虑都不周全。

     

    这里增加了 umask 0077 保证创建备份文件只能是创建者跟root可以访问,其他用户没有权限,保证了备份档案的安全。

     

    find $BACKUP_DIR -type f -mtime $COPIES -delete 是负责备份的份数管理, 过期数据定时删除

     

    创建专用的备份帐号

     

    grant select, lock tables on *.* to 'backup'@'192.168.1.200' identified by "123456";

    crontab 备份脚本

     

    # cat /srv/bin/backup

     

    #!/bin/bash

    ###################################

    # $Id: security.xml 500 2012-12-04 09:01:55Z netkiller $

    # Author: [email protected]

    # Home:

    ###################################

    BACKUP_HOST="localhost"

    BACKUP_USER="backup"

    BACKUP_PASS=""

    BACKUP_DIR=/opt/backup

    BACKUP_DBNAME="test neo"

    #Number of copies

    COPIES=7

    ####################################

    MYSQLDUMP="mysqldump"

    #TIMEPOINT=$(date -u %Y-%m-%d)

    TIMEPOINT=$(date -u %Y-%m-%d.%H:%M:%S)

    MYSQLDUMP_OPTS="-h $BACKUP_HOST -u$BACKUP_USER -p$BACKUP_PASS"

    ####################################

    umask 0077

    test ! -d "$BACKUP_DIR" && mkdir -p "$BACKUP_DIR"

    test ! -w $BACKUP_DIR && echo "Error: $BACKUP_新葡亰496net:三十一日攻读记录,MYSQL不能连接。DIR is un-writeable." && exit 0

     

    for dbname in $BACKUP_DBNAME

    do

        test ! -d "$BACKUP_DIR/$dbname" && mkdir -p "$BACKUP_DIR/$dbname"

     

        $MYSQLDUMP $MYSQLDUMP_OPTS $dbname | gzip > $BACKUP_DIR/$dbname/$dbname.$TIMEPOINT.sql.gz

    done

    find $BACKUP_DIR -type f -mtime $COPIES -delete

    /srv/bin/backup 安全也至关重要,否则会泄漏备份用户的密码

     

    # chown mysql:mysql /srv/bin/backup

    # chmod 500 /srv/bin/backup

    mysqldump 的安全

     

    # chown 700 /usr/bin/mysqldump

    5.5. 数据库归档文件

     

    一般数据库服务器上可以保留一周的备份数据,历史数据需要保存到服务器以外的带库或者阵列柜中,怎么样保证这些数据的安全呢? 我们采用下面方式

     

    制作PGP/GPG密钥,密钥放置在数据库服务器上,证书做好备份,否则一旦丢失,将无法在将备份文件恢复

     

    数据库备份后,首先进行压缩处理

     

    然后使用公钥证书进行GPG/PGP数据加密

     

    这时可以放心的将备份数据库搬出数据库服务器到带库或磁盘阵列柜中

     

    恢复数据,将数据库备份文件复制到该数据库服务器,然后用私钥解密备份文件,再恢复到数据库到中

     

    5.6. 开发与测试环境的数据库安全问题

     

    有时候需要将生产环境的数据复制到开发环境上,例如,测试的时候,重现bug需要真实数据,开发环境的模拟数据无法满足要求,这时需要将生产环境的数据拉到测试或开发环境。如果保证数据的安全非常重要。

     

    最有效的手段是数据混淆,将重要的数据进行混淆扰乱顺序等等

     

    扰乱手段有

     

    颠倒顺序

    曾加干扰词

    重置或替换数据,例如密码可以全部改为test (update user set passwd='test')

    拼装数据 如 (131,137,135,133,139,138,168)后面加8位随机数

    5.7. 与数据库有关的服务器安全问题

     

    其他服务器不能安装mysql客户端与mysqldump备份工具

     

    例如:web服务器只能通过php/jdbc/odbc等链接mysql数据库, web服务器卸载 mysql,mysqldump工具,防止用户登录查询以及将数据库远程备份,然后通过web下载数据库

     

    # adduser www

    # passwd www

    # chmod 500 -R /usr/local/webserver/mysql/bin/*

    # chown root:root -R /usr/local/webserver/mysql/bin/*

     

    1. 帐号安全 帐号权限安全 1.1. Shell 安全 需求:限制用户权限,仅提供一些linux常用命令,用户监控linux系统于网络运行...

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496net:三十一日攻读记录,MYSQL不能连接

    关键词:

上一篇:没有了

下一篇:没有了