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 创建新数据库并添加用户授权
创建数据库
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
- 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
。
- session 修改
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
- 全局修改。打开
mysql.cnf
,在[mysqld]
下面添加:
sql_mode=
在Ubuntu 18.04上安装MySQL
使用 apt 或 tasksel 安装完 mysql-server 之后,默认无法登录,需要进行配置。
- 使用命令
mysql_secure_installation
并按提示操作,之后重启服务。 - 使用
sudo mysql -u root -p
登录,密码为空,或上一步设置的密码。 - 运行以下SQL:
update mysql.user set plugin='mysql_native_password', authentication_string=password('root') where User='root';
,退出,重启服务。
新密码是 root
。
mysql 8.0 无法登录的解决办法:
- 更改加密方式:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
- 更改密码:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- 刷新:
mysql> FLUSH PRIVILEGES;
linux中mariadb安装后phpmyadmin 无法连接的问题怎么解决
There are 2 ways to solve this:
- You can set the root user to use the
mysql_native_password
plugin - You can create a new
db_user
with yousystem_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-development
到 d:\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