Mysql介绍和实践总结
本文首先介绍mysql的安装和基本使用、进阶操作、讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集。

开始安装:
sudo apt-get install mysql-common mysql-server
简单使用
建库
CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
建表
create table MyClass(id int(4) not null primary key auto_increment,name char(20) not null,sex int(4) not null default '0',degree double(16,2));
增
insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
删
delete from MyClass where id=1;
改
update MyClass set name='Mary' where id=1;
查
select * from MyClass;
显示所有的view
select * from information_schema.TABLES where table_type='view' AND table_schema = '数据库名';
进一步操作
创建用户:
create user xxx identified by ‘password’;
重命名:
rename user aaa to bbb;
删除用户:
drop user aaa;
显示权限:
show grants for aaa(用户);
授予权限:
grant select on xxx(数据库).* to aaa(用户);
授予某个数据库的全部权限:
grant all on xxx(数据库).* to aaa(用户);
grant all on xxx(数据库).* to aaa(用户)@localhost;
取消授权:
revoke all on *.* from aaa(用户)@localhost;
修改权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%’ WITH GRANT OPTION;
以上操作完成之后记得刷新权限:
flush privileges;
导入导出
导出数据和表结构:
mysqldump -uroot -p abc(数据库名) > abc.sql
敲回车后输入密码
只导出表结构
mysqldump -uroot -p -d abc > abc.sql
导入数据库
1、首先建空数据库
mysql> create database abc;
2、导入数据库
mysql -u root -p abc(数据库名) < abc.sql
数据库自动备份
新建备份脚本xxx.sh,输入以下内容
#!/bin/bash
# 要备份的数据库名,多个数据库用空格分开
databases=("db1", "db2")
# 备份文件要保存的目录,注意当前用户必须用户保存目录的读写权限
basepath='/root/backup/mysql/'
if [ ! -d "$basepath" ]; then
mkdir -p "$basepath"
fi
# 循环databases数组
for db in ${databases[*]}
do
# 备份数据库生成SQL文件
nice -n 19 /usr/bin/mysqldump -uroot -pcd32d5e86e --database $db > $basepath$db-$(date +%Y%m%d).sql
# 将生成的SQL文件压缩
nice -n 19 tar zPcf $basepath$db-$(date +%Y%m%d).sql.tar.gz -C $basepath $db-$(date +%Y%m%d).sql
# 删除7天之前的备份数据
find $basepath -mtime +7 -name "*.sql.tar.gz" -exec rm -rf {} \;
done
# 删除生成的SQL文件
rm -rf $basepath/*.sql
使用crontab设置定时任务,在终端输入crontab -e,加入以下内容,此任务为每天3点自动执行。
0 3 * * * bash xxx.sh(此处填写脚本绝对地址)
开启日志记录
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
max_binlog_size = 1000M
binlog-format = row
安全模式操作
进入安全模式修改密码
mysqld_safe --skip-grant-tables &
select user,host,password from user where user="root"
不同版本的mysql修改用户密码方式不一样,需要查看mysql->user中的密码字段,如果不是password的话就是authentication_string。
authentication_string的修改方式不太一样:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password";
flush privileges;
quit;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
如果不是authentication_string,则可用以下方法。
update user set password=PASSWORD("your_password") where user="root" and host=“localhost"
新操作
Mysql全文本搜索
Mysql5.6之后支持InnoDB,中文的全文本搜索,内置使用n-gram为分词处理器,还支持中文~。
创建索引
create fulltext index ngram_idx on tag(Title) with parser ngram;
或
alter table tag add fulltext index ngram_idx(Title) with parser ngram;
获取支持的最小分词长度
SHOW VARIABLES LIKE 'ft_min_word_len';
//unix系统可在/etc/my.cnf中修改
[mysqld]
ft_min_word_len = 1
开始使用
select Title,match(Title) against('清水') from tag ;
可能出现的问题集:
- 描述
2017-05-04T01:21:32.004560Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-05-04T01:21:32.023009Z mysqld_safe A mysqld process already exists
解决方法:
$ sudo killall mysqld
- 描述
2017-05-04T01:22:26.486677Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-05-04T01:22:26.488204Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
解决方法:
sudo mkdir -p /var/run/mysqld
sudo chown -R mysql:mysql /var/run/mysqld
- 描述
$ sudo /etc/init.d/mysql start
ies: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
[....] Starting mysql (via systemctl): mysql.servicejob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
解决方法:
当前文件夹不是实际目录导致
cd到一个实际目录位置即可
- 描述
sudo /etc/init.d/mysql start
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
[....] Starting mysql (via systemctl): mysql.servicejob-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
按照提示:See "systemctl status mysql.service" and "journalctl -xe" for details.
但是并么有什么卵用,直接看mysql的log:/var/log/mysql/error.log
2017-05-04T01:37:56.583745Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.
解决方法:
杀掉所有mysqld进程:killall mysqld
再次sudo /etc/init.d/mysql start 成功
- 描述
dpkg被锁定
解决方法
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
Mysql介绍和实践总结的更多相关文章
- mysql介绍及安装
一.MySQL介绍 1.标志 MySQL的海豚标志的名字叫"sakila",它是由MySQL AB的创始人从用户在"海豚命名"的竞赛中建议的大量的名字表中选出的 ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
- MySQL系列-第一章节:MySQL介绍与安装
1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...
- 关于Axure RP软件的介绍——软件工程实践第二次个人作业
关于Axure RP软件的介绍——软件工程实践第二次个人作业 Axure RP是一个非常专业的快速原型设计的一个工具,客户提出需求,然后根据需求定义和规格.设计功能和界面的专家能够快速创建应用软件或W ...
- RabbitMQ系列(三)RabbitMQ交换器Exchange介绍与实践
RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
- MySql介绍
MySql介绍 标签(空格分隔): MySql MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 ...
- MySQL介绍及安装(一)
一.关系型数据库和非关系型数据库 1.1:关系型数据库 关系型数据库是把复杂的数据结构归结为简单的二元关系(即二维表格的形式),在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上的,通过 ...
- mysql性能测试--sysbench实践
mysql性能测试--sysbench实践 Sysbench 业界较为出名的性能测试工具 可以测试磁盘,CPU,数据库 支持多种数据库:oracle,DB2,MYSQL 需要自己下载编译安装 建议 ...
随机推荐
- 消息队列NetMQ 原理分析5-StreamEngine、Encord和Decord
消息队列NetMQ 原理分析5-StreamEngine,Encord和Decord 前言 介绍 目的 StreamEngine 发送数据 接收数据 流程分析 Encoder V2Encoder V1 ...
- spring集成mybatis实现mysql读写分离
前言 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈.幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库的数据更新同步到另一台服务器上. ...
- C#去掉JSON字符串中的最后一个数字
这个问题总结起来就是去掉字符串中的最后一个"," 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: ...
- 《Java从入门到放弃》入门篇:springMVC数据传递
springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...
- Hadoop1.0.3安装部署
0x00 大数据平台相关链接 官网:http://hadoop.apache.org/ 主要参考教程:http://www.cnblogs.com/xia520pi/archive/2012/05/1 ...
- UNIX 高手的 10 个习惯
引言 当您经常使用某个系统时,往往会陷入某种固定的使用模式.有时,您没有养成以尽可能最好的方式做事的习惯.有时,您的不良习惯甚至会导致出现混乱.纠正此类缺点的最佳方法之一,就是有意识地采用抵制这些坏习 ...
- 阅读:DBA们不得不知的数据库硬件RAID常识
对于数据库这种特殊应用IOPS往往会成为瓶颈,突破的这个瓶颈的有效方法不多,软件方面主要是读写分离,垂直拆分,分区表技术,cluster.硬件方面主要是raid,和SSD. 通常都是软件和硬件同时优化 ...
- Linux 环境变量详解
1. $HOME变量从哪里获得的? HOME 本身是 shell 来设置的,你可以自己手工设置(例如使用 bash 的 export),也可以在 shell 的初始化文件中设置(例如 bash 的 . ...
- 关于MySQL buffer pool的预读机制
预读机制 两种预读算法 1.线性预读 2.随机预读 对预读的监控 一.预读机制 InnoDB在I/O的优化上有个比较重要的特性为预读,预读请求是一个i/o请求,它会异步地在缓冲池中预先回迁多个页面,预 ...
- 谷歌。百度,阿里云,机器翻译简单PK。
原文:Google 的免费翻译服务可提供简体中文和另外 100 多种语言之间的互译功能,可让您即时翻译字词.短语和网页内容. 阿里云:google's free translation service ...