mysql、influxdb常用命令及操作
常用命令
use dbname;
进入数据库
show full columns from dbname.tablename;
查看某表的字段信息
mysqldump -u usrname -h hostname -p dbname > xx.sql
将某个数据库转换为sql语言
mysqldump -u usrname -h hostname -ppassword dbname > xx.sql
不需输入密码直接转换sql语言(password紧贴-p)
source xx.sql;
将sql文件导入
show databases;
展示数据库
show tables;
展示数据库中的表
CREATE DATABASE dbname
创建数据库
sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
ubuntu更改mysql配置
DESCRIBE tablename;
简单描述表的字段信息
select user,host from mysql.user
查看mysql所有的用户信息
workbench 建表的字段中
PK:主键
NN:非空
UQ:唯一
BIN:二进制数据标识
UN:非负
ZF:填充零(记得在数字前填充零,但填零可以在数据展示中做;直接填充曾经有过数字位数兼容性的错误)
AI:自增
G:生成
用户管理
# 新建用户
create user 'usrname'@'hostname' identified by 'password';
# 赋予权限,如下是将dbname开发时使用的权限赋给user
grant select, update, delete, insert on dbname.* to 'usrname'@'hostname';
修改用户的密码:alter user 'username'@'hostname' identified by 'newpassword'
数据文件存储位置迁移
这里的数据文件存储位置指的是数据库、表及数据项物理存储的路径。假设将数据从/var/lib/mysql文件夹下迁移至/new目录下。
-
查询数据文件存储位置
show variables like '%dir%';
,看datadir的值
-
关停mysql服务
service mysql stop
-
复制数据文件
cp -arp /var/lib/mysql /new
,复制之后/new下面会有一个mysql文件夹,mysql文件夹下是数据文件,将/new的权限赋予给mysqlchown -R mysql:mysql /new
-
vi /etc/mysql/mysql.conf.d/mysqld.cnf
,将datadir=/var/lib/mysql注释掉,加上一行datadir=/new
-
vi /etc/apparmor.d/usr.sbin.mysqld
将/var/lib改为/new,如图所示
-
重启apparmor服务和mysql
/etc/init.d/apparmor restart service mysql restart
-
可以按1中方法检查datadir的值是否为/new
数据库的备份
备份脚本
# !/bin/sh
# DUMP=/usr/local/mysql/bin/mysqldump #mysqldump备份程序执行路径
OUT_DIR=/backup #备份文件存放路径
LINUX_USER=mysql #系统用户名
DB_NAME=db
DB_USER=usr #数据库账号 注意:非root用户要用备份参数 --skip-lock-tables,否则可能会报错
DB_PASS=password #数据库密码
DATE=`date +%Y-%m-%d_%H:%M:%S`
DAYS=7 #表示删除7天前的备份,保留最近7天的
DB_DATE=DB${DATE}.sql #获取当前系统时间
DB_OUT_SQL=${OUT_DIR}/${DB_DATE} #备份数据库的文件名
mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} --opt -Q -R --skip-lock-tables --no-tablespaces> ${DB_OUT_SQL} #备份
chown ${LINUX_USER}:${LINUX_USER} $DB_OUT_SQL #更改备份数据库文件的所有者
find ${OUT_DIR} -name "*.sql" -type f -mtime +${DAYS} -exec rm {} \;
vi /etc/crontab
修改定时脚本文件
增加一行:0 0,8,16 * * * mysql path_to_backup.sh(脚本路径)
重启cron服务service cron restart
ubuntu新版mysql默认登陆方式
mysql安装好后sudo vi /etc/mysql/debian.cnf
可查看mysql非root用户登录的用户名和密码。
root用户不需要sudo就能访问数据库
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]配置项下加上一行skip-grant-tables,重启mysql服务
influxdb数据库数据的导入导出
导出:influx_inspect export -datadir "/opt/influxdb/data" -waldir "/opt/influxdb/wal" -out "wave.txt" -database wave -start 2020-01-01T08:00:01Z
导入:influx -import -path=Desktop/wave.txt -precision=ns
pymysql因1698错误码不能访问mysql
我也不懂为什么mysql搞这么多身份认证的麻烦玩意儿,可能得去补补知识,但针对这一问题的解决方法是set password for 用户名@localhost = password('密码'),因为对于该用户使用mysql -uusr -p之后输密码和mysql -uusr直接回车都能进入mysql,可能pymysql默认通过无密码的接口进去又有什么弯弯绕绕的机制禁止这样访问,所以改个目标密码,就能解决,之后重启mysql服务,但这样改完之后mysql -uusr直接回车还是能进去,这改了个寂寞。另外,docker里面的flask项目设置访问数据库localhost:3306访问的宿主机的,毕竟docker里的mysql不知在哪个端口上架着呢,docker里全身心地部署网站项目。
参考链接
1
mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
2
MySQL用户管理
[MySQL] - MySQL的Grant命令
MySQL创建用户与授权
3
4
5
6
7
InfluxDB 导入导出数据(官方正版,踩了一天的才试出来的)
8
Ubuntu下解决root账户登录mysql只能sudo登录的问题
9
python使用pymysql连接数据库报错err.OperationalError: (1698, “Access denied for user ‘root‘@‘localhost‘“)mysql10版本用这个改密码的命令
关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法mysql8版本用这个改密码的命令
拓展阅读:
Java数据类型和MySql数据类型对应表
本文创建于2020-07-25 16:29,修改于2023年6月22日19点17分