标签归档:mysql

mysql 创建新数据库并添加用户授权

创建数据库

CREATE DATABASE IF NOT EXISTS `itop` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

创建用户,并:

  • 创建与用户同名的数据库并授予所有权限。
  • 给以 用户名_ 开头的数据库 (username_%) 授予所有权限。
-- 把 itop 改为对应的用户名

CREATE USER `itop`@`%` IDENTIFIED WITH mysql_native_password USING password('sddt8888');
GRANT ALL PRIVILEGES ON `itop`.* TO 'itop'@'%';
GRANT ALL PRIVILEGES ON `itop\_%`.* TO 'itop'@'%';
FLUSH PRIVILEGES;

创建只读用户

CREATE USER `itop`@`%` IDENTIFIED WITH mysql_native_password USING password('sddt8888');
GRANT Select ON `itop`.* TO `itop`@`%`;
FLUSH PRIVILEGES;

删除用户

DROP USER `itop`@`%`;
FLUSH PRIVILEGES;

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

mysql 8.0 无法登录的解决办法:

  1. 更改加密方式:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
  1. 更改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
  1. 刷新:
mysql> FLUSH PRIVILEGES;

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 中自动备份 mysql

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

编辑口令配置 /home/mysql_backup/extra.cnf

[client]
user=mysqluser
password=mysqlpassword

编辑备份脚本 /home/mysql_backup/backsql.sh

#!/bin/bash
root='/home/back/mysql'
data="$root/data"
extra="$root/extra.cnf"
tag=`date +%Y/%m%d`
log="$data/backup.log"

mkdir -p $data/$tag/

mysqldump --defaults-extra-file=$extra tableName | pigz > $data/$tag/tableName.sql.gz

# 删除10天以前的备份
find $root/* -mtime +10 -exec rm {} \;

# 写日志
echo "backup finished at $(date +'%Y-%m-%d %H:%M:%S')" >> $log

继续阅读