标签归档:mysql

实现mysql自动备份的简单脚本

#!/bin/bash
#chmod 700 backup.sh
#crontab -e
#每天4点, mysql备份数据
#0 4 * * * /home/cron/mysql_backup.sh

host="localhost"
user="dbname"
password="dbname"
db_name="dbname"

#backup directory
base_dir="/home/backup"
backup_log="${base_dir}/mysql_backup.log"
backup_path=${base_dir}

#file info
date=$(date +"%Y-%m-%d")
filename=$backup_path/$db_name-$date.sql.gz

#back up
mkdir -p $backup_path
mysqldump --user=$user --password=$password --host=$host $db_name | gzip > $filename
#Delete files older than 10 days
find $backup_path/* -mtime +10 -exec rm {} \;
echo "backup finished at $(date +'%Y-%m-%d %H:%M:%S')" >> "$backup_log"

Mysql彻底卸载重装

sudo apt-get purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/log/mysql
sudo rm -rf /var/log/mysql.*
sudo rm -rf /var/lib/mysql
sudo apt-get install mysql-server --fix-missing --fix-broken

mysql创建新用户并授权

mysql数据库创建用户,并:
– 创建与用户同名的数据库并授予所有权限。
– 给以 用户名_ 开头的数据库 (username_%) 授予所有权限。

# 把 itop 改为对应的用户名

CREATE USER 'itop'@'%' IDENTIFIED WITH mysql_native_password;
GRANT USAGE ON *.* TO 'itop'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
SET PASSWORD FOR 'itop'@'%' = '***';
CREATE DATABASE IF NOT EXISTS `itop`;
GRANT ALL PRIVILEGES ON `itop`.* TO 'itop'@'%';
GRANT ALL PRIVILEGES ON `itop\_%`.* TO 'itop'@'%';

mysql全局修改sql_mode

  1. mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等。可以通过以下方式查看当前数据库使用的 sql_mode:
show variables like 'sql_mode';

5.7.22 版本中,结果是 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

  1. session 修改
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
  1. 全局修改。打开 mysql.cnf ,在 [mysqld] 下面添加:
sql_mode=

在Ubuntu 18.04上安装MySQL

使用 apt 或 tasksel 安装完 mysql-server 之后,默认无法登录,需要进行配置。

  1. 使用命令 mysql_secure_installation 并按提示操作,之后重启服务。
  2. 使用 sudo mysql -u root -p 登录,密码为空,或上一步设置的密码。
  3. 运行以下SQL: update mysql.user set plugin='mysql_native_password', authentication_string=password('root') where User='root'; ,退出,重启服务。

新密码是 root

linux中mariadb安装后phpmyadmin 无法连接的问题怎么解决

There are 2 ways to solve this:

  1. You can set the root user to use the mysql_native_password plugin
  2. You can create a new db_user with you system_user (recommended)

Option 1:

 sudo mysql -u root # I had to use "sudo" since is new installation  mysql> USE mysql; mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root'; mysql> FLUSH PRIVILEGES; mysql> exit;   service mysql restart

Option 2: (replace YOUR_SYSTEM_USER with the username you have)

 sudo mysql -u root # I had to use "sudo" since is new installation  mysql> USE mysql; mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY ''; mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost'; mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER'; mysql> FLUSH PRIVILEGES; mysql> exit;   service mysql restart

账号初始化:

$ sudo mysql_secure_installation

默认root密码为空;然后设置root密码和其他选项:

- Set root password? [Y/n] y
- Remove anonymous users? [Y/n] y
- Disallow root login remotely? [Y/n] y
- Remove test database and access to it? [Y/n] y
- Reload privilege tables now? [Y/n] y

登陆MariaDB命令行:

$ sudo mysql -u root -p

java 连接 mysql 并使用 prepareStatement 查询数据库

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.sql.*;
import java.util.*;

public class Main {

    public static void main(String[] args) {

        Connection conn = null;
        User user = null;
        Gson gson = new Gson();

        try {
            # JDK6 之前的版本需要加载驱动
            # new com.mysql.jdbc.Driver();

            # 连接数据库
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?" +
                    "useSSL=false&useUnicode=true&characterEncoding=UTF8", "root", "root");

            # 使用 prepareStatement 查询数据库
            PreparedStatement preStatement = conn.prepareStatement("select * from tables");
            ResultSet res = preStatement.executeQuery();

            List<User> users = new ArrayList<User>();
            while (res.next()) {
                user = new User();
                user.setId(Integer.parseInt(res.getString("id")));
                user.setUser(res.getString("user"));
                users.add(user);
            }
            # 导出为 json
            String strJson = gson.toJson(users);
            System.out.println(strJson);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

继续阅读

自建 wnmp 运行环境

网盘下载:

链接: https://pan.baidu.com/s/1eR81ZCe 密码: zj68
解压后移动到 d:\wnmp 目录下,运行 service.bat(双击运行)。更多内容查看 readme.md

手动创建

环境:操作系统 win7,安装目录 d:\wnmp 。

nginx

1、下载 nginx,解压后改名到 d:\wnmp\nginx 目录下。
2、编辑 c:\wnmp\nginx\config\nginx.conf

解除以下行的注释:
#error_log  logs/error.log;
#pid        logs/nginx.pid;

在 http 块首添加以下行:
upstream php_processes {
    server 127.0.0.1:9000 weight=1;
}

在最后一个 server 块之后添加以下行:
server_names_hash_bucket_size 64; #server_name长度限制
server_names_hash_max_size 1024; #server_name条数限制
include ../../vhosts/*.conf;

php

1、下载 php,考虑到兼容性 和 运行模式,应该下载 x86 nts 版本。解压后改名到 d:\wnmp\php 目录下。
2、复制 d:\wnmp\php\php.ini-developmentd:\wnmp\php\php.ini,并编辑此文件:

生产环境请复制 php.ini-production

解除以下行的注释:
; extension_dir = "ext"
;cgi.fix_pathinfo=1
修改 cgi.fix_pathinfo 值
cgi.fix_pathinfo=0
其他配置根据需求自行配置

继续阅读

C# 连接数据库MySql并执行查询命令

首先,下载MySql.Data.dll,并将它放在你的工程目录下的Dubug下。

其次,右键点击你的项目名字,选择“添加引用”,将MySql.Data.dll添加到项目中。

最后,在代码页中输入using MySql.Data.MySqlClient;,然后就可以使用这个类库来建立连接了。

建立连接代码:

MySqlConnection sqlCon = new MySqlConnection("Database=数据库名字;Data Source=服务器的ip地址;User Id=用户名;Password=用户密码");

继续阅读

怎样在linux下利用cron自动备份数据库

以下是我在服务器上利用cron部署的自动备份mysql数据库的shell脚本,脚本按天生成每次备份目录,生成的文件经过 gzip 压缩节省磁盘空间。

编辑备份脚本

sudo vi /home/cron/backsql.sh
#!/bin/bash
root='/home/back/mysql'
tag=`date +%Y/%m%d`
usernm='root'
passwd='thisIsPasswd'
mkdir -p root/tag/

mysqldump -uusernm -ppasswd tableName | gzip > root/tag/tableName.sql.gz

继续阅读