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.cnfubuntu更改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目录下。

  1. 查询数据文件存储位置show variables like '%dir%';,看datadir的值

  2. 关停mysql服务service mysql stop

  3. 复制数据文件 cp -arp /var/lib/mysql /new,复制之后/new下面会有一个mysql文件夹,mysql文件夹下是数据文件,将/new的权限赋予给mysqlchown -R mysql:mysql /new

  4. vi /etc/mysql/mysql.conf.d/mysqld.cnf,将datadir=/var/lib/mysql注释掉,加上一行datadir=/new

  5. vi /etc/apparmor.d/usr.sbin.mysqld将/var/lib改为/new,如图所示

  6. 重启apparmor服务和mysql

    /etc/init.d/apparmor restart
    service mysql restart
    
  7. 可以按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

mysqldump备份 直接输入密码

4

ubuntu下mysql数据库存储路径修改

5

Ubuntu自动备份MySQL数据库

6

linux下用shell删除三天前或者三天内的文件

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分

posted @ 2020-07-25 16:29  园糯  阅读(878)  评论(0编辑  收藏  举报