制作RPM包遇到的问题

1.
error: Package already exists: %package debuginfo
在spec中注释掉字段或tag会提示以上错误,不要的字段和tag直接删除掉

我的问题 要直接删除 注释也不行
#%install

mysql5.6 rpm 打包过程和错误记录

ip 192.168.1.116
root
12345678

ps:
my.cnf
# by evan
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
binlog_ignore_db = include_database_name

一开始打包编译不过是因为 我以前在打包5.5 时加了
# by evan 20180824pm
#CFLAGS=”-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing”
#CXX=g++
#CXXFLAGS=”-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing”
#export CFLAGS CXX CXXFLAGS

[root@localhost ~]# rpm -ivh dkm_mysql-5.6.32-1.0.x86_64.rpm
Preparing… ########################################### [100%]
1:dkm_mysql ########################################### [100%]
cp: 无法获取”/data/apps/mysql/support-files/mysql.server” 的文件状态(stat): 没有那个文件或目录
chmod: 无法访问”/etc/rc.d/init.d/mysqld”: 没有那个文件或目录
在 mysqld 服务中读取信息时出错:没有那个文件或目录
/var/tmp/rpm-tmp.621ZR9: line 19: /etc/init.d/mysqld: 没有那个文件或目录
/var/tmp/rpm-tmp.621ZR9: line 20: /data/apps/mysql/bin/mysqladmin: 没有那个文件或目录
no crontab for root

[root@localhost bin]# 160825 09:54:18 mysqld_safe Logging to ‘/data/logs/mysql/mysqld-error.log’.
touch: 无法创建”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
chmod: 无法访问”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
touch: 无法创建”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
chown: 无法访问”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
160825 09:54:18 mysqld_safe Starting mysqld daemon with databases from /data/mysql/
./mysqld_safe: line 129: /data/logs/mysql/mysqld-error.log: 没有那个文件或目录
./mysqld_safe: line 166: /data/logs/mysql/mysqld-error.log: 没有那个文件或目录
touch: 无法创建”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
chown: 无法访问”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
chmod: 无法访问”/data/logs/mysql/mysqld-error.log”: 没有那个文件或目录
160825 09:54:18 mysqld_safe mysqld from pid file /data/mysql//localhost.localdomain.pid ended
./mysqld_safe: line 129: /data/logs/mysql/mysqld-error.log: 没有那个文件或目录

[1]+ Exit 1 ./mysqld_safe

[root@localhost ~]# rpm -ivh dkm_mysql-5.6.32-1.0.x86_64.rpm
Preparing… ########################################### [100%]
chown: 无法访问”/data/logs/”: 没有那个文件或目录
error: %pre(dkm_mysql-5.6.32-1.0.x86_64) scriptlet failed, exit status 1
error: install: %pre scriptlet failed (2), skipping dkm_mysql-5.6.32-1.0

打包错误
warning: Could not canonicalize hostname: dkm-lnmp-test

安装错误
[root@localhost ~]# rpm -ivh dkm_mysql-5.6.32-1.0.x86_64.rpm
Preparing… ########################################### [100%]
1:dkm_mysql ########################################### [100%]
Starting MySQL… ERROR! The server quit without updating PID file (/data/mysql//localhost.localdomain.pid).
/data/apps/mysql/bin/mysqladmin: connect to server at ‘localhost’ failed
error: ‘Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)’
Check that mysqld is running and that the socket: ‘/tmp/mysql.sock’ exists!

上面的错误 搞了哥两天呀

原因
打包成功mysql 5.6 一开始是参数 搞错 还有就是 /da/app/mysql 里面有 my.cnf

解决办法
1.打包( 安装)时指定了my.cnf (-DSYSCONFDIR=/etc) # 我采取了这种办法
2./da/app/mysql 里面有 my.cnf

重新配置vi /etc/my.cnf 加入

别人的说的办法
#在[mysqld]中添加:
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
tmpdir = /tmp
#保存退出
#初始化数据库

./mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data –pid-file=/usr/local/mysql/data/mysql.pid –tmpdir=/tmp

ucmq install

#ucmq install
项目要用到 消息队列服务 于是大家选择了 ucmq

git clone git://github.com/ucopensource/ucmq.git
cd ucmq/

ls /usr/local/libevent/
./configure --with-libevent=/usr/local/libevent --prefix=/usr/local/ucmq
make clean && make -j4 && make install

2.3.3. 配置说明
[server]

http_listen_addr=127.0.0.1 //监听地址

http_listen_port=1818 //监听端口

allow_exec_ip=0 //允许执行运维指令的ip,0为不限制

binlog_file_path=../binlog //binlog目录(暂未实现主从)

output_log_path=../log //日志目录

output_log_level=INFO //日志记录级别

keep_alive=300 //长连接有效时间(单位:秒)

conf_file=../conf/ucmq.ini //配置文件路径

pid_file=/tmp/ucmq_eth0_1818.pid //进程保护文件

res_store_space=4 //预留磁盘空间(单位:GB)

[rtag]

sync_interval=10 //数据文件内存映射持久化操作间隔(写操作次数)

sync_time_interval=100 //间隔n秒后持久化rtag和DB的信息,会调用fsync。

[queue]

def_max_queue=1000000 //队列允许积压消息量,设置为0则不限制

#延时只能设置更大

def_delay=0 //队列延时时间

#以下内容自从启动后不允许修改

[db]

data_file_path=../data //data文件存放路径

#文件大小不允许超过64,必须是系统页大小的倍数

db_file_max_size=64 //允许的data文件的最大限制(单位:MB)

2.3.4. 启动参数说明
cd bin
./ucmq -h

—————————————————————————

HTTP Simple Message Queue Service – ucmq v2.0.1 (May 21 2013 11:19:54)

-c config file path

-d run as a daemon

-v, –version print version and exit

-h, –help print this help and exit

Note1: Use command “killall ucmq” and “kill `cat /tmp/ucmq.pid`” to stop ucmq.

Note2: Please don’t use the command “pkill -9 ucmq” and “kill -9 PID of ucmq” !

—————————————————————————-

2.4. 启动服务
cd bin
./ucmq -c ../conf/ucmq.ini -d

2.5. 关闭服务

要使ucmq正常退出,除了kill进程号之外,还可以在使用以下命令:
$ curl “http://:/exec?cmd=kill”

3. 协议接口

3.1. 协议说明

协议中所有参数均大小写敏感。服务端返回的内容中以“UCMQ_HTTP”开头的返回内容被称为“返回标识”,该标识描述了HTTP请求的服务返回状态(返回标识尾部有隐藏的“\r\n”)。如果队列还未创建,可通过执行某些操作(put/maxqueue/delay)创建新的队列。
PS:如果在linux终端(如bash)中使用curl操作下述命令,请务必注意在url前后加上括号,以避免“&”字符被转义。
3.2. 业务接口

3.2.1. 入队列(put)
把消息写入队列有两种方式:HTTP GET和HTTP POST,如果希望传递大于2k字节或者非文本数据,建议使用HTTP POST方式。
入队列HTTP GET方式,格式如下:
http://:/?name=&opt=put&data=&ver=2

使用curl方式执行POST方法,如:
$ curl -d “” “http://:/?name=&opt=put&ver=2″

http://ucweb.github.io/ucmq_guide/

sed 常用操作

一、在某行的前一行或后一行添加内容
cat test
11111
22222
3333
#行前, 在第一行前插入00000
sed -i ‘/11111/i00000’ test
sed -i ‘/11111/i\00000’ test #这样看比较方便
cat test
00000
11111
22222
3333

cat test
11111
22222
3333
#行后
sed -i '/11111/a00000' test
sed -i '/11111/a\00000' test

cat test
11111
00000
22222
3333

a or i
a
text Append text, which has each embedded newline preceded by a backslash.
i
text Insert text, which has each embedded newline preceded by a backslash.

可以配合find查找的内容处理

#巧妙添加html注释
find . -name server.xml|xargs sed -i ‘/directory/i

二、在某行(指具体行号)前或后加一行内容
evan@evankali:~/tmp$ cat test -n
1 00000
2 11111
3 22222
4 3333
5 d
evan@evankali:~/tmp$ sed -i 'N;4alove' test #ln 4后面加上新的一行,内容为love
evan@evankali:~/tmp$ cat test -n
1 00000
2 11111
3 22222
4 3333
5 love
6 d

evan@evankali:~/tmp$ sed -i ‘N;4ilove’ test
evan@evankali:~/tmp$ cat -n test
1 00000
2 11111
3 love
4 22222
5 3333
6 love
7 d

三、删除指定行的上一行或下一行

删除指定文件的上一行
sed -i -e :a -e ‘$!N;s/.*n(.*11111)/1/;ta’ -e ‘P;D’ test
删除指定文件的下一行
sed -i ‘/pattern=”%/{n;d}’ server.xml

参考
http://www.361way.com/sed-process-lines/2263.html

sed使用:在某一行前/后追加内容
http://blog.sina.com.cn/s/blog_6a1837e90102vg2l.html

删除指定行的上一行和下一行
https://blog.linuxeye.com/216.html

linux之sed用法 相当好的教程呀
http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html

mysql binlog开启和使用

基础知识
二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001和XXX-bin.index,若配置选项没有给出文件名,Mysql将使用主机名称命名这两个文件,其中.index文件包含一份全体日志文件的清单。Mysql会把用户对所有数据库的内容和结构的修改情况记入XXX-bin.n文件,而不会记录SELECT和没有实际

使用日志进行数据库恢复
如果遇到灾难事件,应该用最近一次制作的完整备份恢复数据库,然后使用备份之后的日志
文件把数据库恢复到最接近现在的可用状态。
使用日志进行恢复时需要依次进行,即最早生成的日志文件要最先恢复:
mysqlbinlog xxx-bin.00001 | mysql -u root -p
mysqlbinlog xxx-bin.00002 | mysql -u root -p

开启方法如下

1.linux 在my.cnf
[mysqld]
# by evan
log_bin = /var/log/mysql/mysql-bin.log
expire_logs_days = 10
max_binlog_size = 100M
#binlog_do_db = include_database_name
binlog_ignore_db = include_database_name

2.windows 在my.ini(window)配置文件里面[mysqld]添加
[mysqld]
# by evan
expire_logs=5
#log-bin=D:/MysqlData/data/log-bin/logbin.log
log-bin=D:/MysqlData/Data/log/mysql-bin
binlog-ignore-db=ignore-dbname

恢复举例
mysqlbinlog -d games_s25 --start-datetime="2016-07-25 02:05:00" --stop-datetime="2016-07-25 04:40:00" "mysql-bin.000201" | mysql -uroot -ppassword

MySQL 查询缓存

mysql开启查询缓存,一般默认是开启了的 (have_query_cache 部分为yes)
mysql> show variables like '%cache%';
+——————————+———————-+
| Variable_name | Value |
+——————————+———————-+
| binlog_cache_size | 32768 |
| binlog_stmt_cache_size | 32768 |
| have_query_cache | YES |
| key_cache_age_threshold | 300 |
| key_cache_block_size | 1024 |
| key_cache_division_limit | 100 |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| metadata_locks_cache_size | 1024 |
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
| stored_program_cache | 256 |
| table_definition_cache | 400 |
| table_open_cache | 64 |
| thread_cache_size | 0 |
+——————————+———————-+

查看是否缓存:
mysql> show status like '%Qcache%';

看到所有项目为0,表示缓存功能并没有运行起来。

修改my.cnf配置文件,添加:

query_cache_type = 1
#0 -– 不启用查询缓存;
1 -– 启用查询缓存,只要符合查询缓存的要求,客户端的查询语句和记录集斗可以缓存起来,共其他客户端使用;
2 -– 启用查询缓存,只要查询语句中添加了参数:SQL_CACHE,且符合查询缓存的要求,客户端的查询语句和记录集,则可以缓存起来,共其他客户端使用;
query_cache_limit = 1M //限制查询缓存大小
query_cache_size = 32M //设置缓存占用内存大小

http://www.68idc.cn/help/server/20150703413117.html

MySQL 查询缓存
http://www.cnblogs.com/xiaocen/p/3720337.html

Debian 8 Gnome桌面如何安装fcitx五笔拼音输入法

Debian 8 Gnome桌面如何安装fcitx五笔拼音输入法

apt-get update
apt-get install fcitx fcitx-table-wbpy fcitx-config-gtkapt-get update
apt-get install fcitx fcitx-table-wbpy fcitx-config-gtk

配置fcitx五笔拼音输入法

上面的apt-get install命令完成后,重新登录系统,这样是为了检测新安装的输入法。然后以普通用户在终端里输入下面的命令打开fcitx输入法配置窗口。

fcitx-config-gtk3

在安装fcitx五笔拼音的同时也会安装拼音和双拼输入法,所以如果你只想要五笔拼音,那么可以在这个配置窗口里将拼音和双拼删除,保留键盘布局和五笔拼音输入法。

Telegram不能使用fcitx输入中文的解决办法

解决的方法很简单。打开home目录下的.bashrc文件。

vi ~/.bashrc

#将下面的三行命令添加到文件末尾。bashrc文件里的命令会在每次用户登录的时候执行。
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx

保存文件后重新登录系统。现在就可以在telegram里用fcitx输入中文了。

PS : 我遇到的问题是 gnome 3 fctix 不能用,换成mate 就可以了

mysql study之常用操作-tag

有个哥说介绍一些mysql常用操作,于是有了此文

补充
RDBS, Relation data base system(关系型数据库系统),数据以二维表形式存储,每行(row)代表同一行数据,为记录
每列表示记录中的某个属性,为字段也

不能用 kill -9 因为会 自动重启 mysql service
root@debian:/# mysqladmin -pevan shutdown
root@debian:/h# ps -ef | grep mysqld
root 9950 5490 0 19:11 pts/0 00:00:00 grep mysqld

root@debian:# mysqladmin -pevan status
mysqladmin: connect to server at ‘localhost’ failed
error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)’
Check that mysqld is running and that the socket: ‘/var/run/mysqld/mysqld.sock’ exists!

rm -f /var/run/mysqld/mysqld.sock

root@debian:# mysqladmin -pevan status
Uptime: 19 Threads: 1 Questions: 2 Slow

p628 /etc/init.d/mysqld

mysql> show variables like ‘%buffer%’;
+——————————+———–+
| Variable_name | Value |
+——————————+———–+
| bulk_insert_buffer_size | 8388608 |
| innodb_buffer_pool_instances | 1 |
| innodb_buffer_pool_size | 134217728 |
| innodb_change_buffering | all |
| innodb_log_buffer_size | 8388608 |
| join_buffer_size | 131072 |
| key_buffer_size | 16777216 |
| myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 16384 |
| preload_buffer_size | 32768 |
| read_buffer_size | 131072 |
| read_rnd_buffer_size | 262144 |
| sort_buffer_size | 2097152 |
| sql_buffer_result | OFF |
+——————————+———–+

mysqladmin

#change the root password is 123456
mysqladmin -uroot -p password 123456

evan@debian:~/bakkali/software$ mysqladmin -uroot -p processlist
Enter password:
+—-+——+———–+—-+———+——+——-+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+———–+—-+———+——+——-+——————+
| 53 | root | localhost | | Sleep | 118 | | |
| 54 | root | localhost | | Query | 1 | | show processlist |
+—-+——+———–+—-+———+——+——-+——————+

26.5 p639
mysql> show tables;
+—————————+
| Tables_in_mysql |
+—————————+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |

mysql> describe user;
+————————+———————————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————————+———————————–+——+—–+———+——-+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum(‘N’,’Y’) | NO | | N | |
| Insert_priv | enum(‘N’,’Y’) | NO | | N | |
| Update_priv | enum(‘N’,’Y’) | NO | | N | |

#创建表
CREATE TABLE IF NOT EXISTS employees ( #
EMPLOYEE_ID varchar(10) not null, #// EMPLOYEE_ID 字段的类型为varchar(10),字段值不允许为空
FIRST_NAME varchar(10) not null,
LAST_NAME varchar(10) not null,
EMALL varchar(50) not null,
HIRE_DATE date, #date 类型
JOB_ID int not null,
SALARY int default 0, #//SALARY 字段默认值为0
MANAGER_ID int ,
DEPARTMENT_ID int not null,
primary key (EMPLOYEE_ID) ) #// 主键为EMPLOYEE_ID
#// 使用数据库引擎为MyISAM
ENGINE=MyISAM DEFAULT CHARSET=utf8;

mysql> describe employees;
+—————+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+—————+————-+——+—–+———+——-+
| EMPLOYEE_ID | varchar(10) | NO | PRI | NULL | |
| FIRST_NAME | varchar(10) | NO | | NULL | |
| LAST_NAME | varchar(10) | NO | | NULL | |
| EMALL | varchar(50) | NO | | NULL | |
| HIRE_DATE | date | YES | | NULL | |
| JOB_ID | int(11) | NO | | NULL | |
| SALARY | int(11) | YES | | 0 | |
| MANAGER_ID | int(11) | YES | | NULL | |
| DEPARTMENT_ID | int(11) | NO | | NULL | |
+—————+————-+——+—–+———+——-+
9 rows in set (0.00 sec)

#######################
修改新密码
use mysql;
update user set password=PASSWORD('evan') where user='root'; #
##最好要加这一行
flush privileges;

shell>mysqladmin -uroot -p password  新密码
# 然后在提示符后输入老密码

增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by ‘密码’
举例:
例 1:增加一个用户 test1 密码为 abc,让他可以在任何主机上登录,并对所有数据库有
查询、插入、修改、删除的权限。首先用以 root 用户连入 MySQL,然后键入以下命令:
mysql> grant select,insert,update,delete on *.* to test1@localhost identified by 'abc';
Query OK, 0 rows affected
#或者
mysql> grant all privileges on *.* to test1@localhost identified by 'abc';
flush privileges;

删除用户
delete from user where user=’用户名’ and host=’localhost’;
delete from user where user='test2' and host='localhost';
flush privileges;

查看当前使用的数据库
select database();

表操作

备注:操作之前使用“use <数据库名>”应连接某个数据库。
建表
命令:create table <表名> (<字段名 1> <类型 1> [,..<字段名 n> <类型 n>]);

create table mm(
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))
#ENGINE=InnoDB;
ENGINE=MyISAM DEFAULT CHARSET=utf8;

获取表结构
命令: desc 表名,或者show columns from 表名
mysql> describe my;
mysql> desc my;
show columns from my;

删除表
drop table

插入数据
命令:insert into <表名> [( <字段名 1>[,..<字段名 n > ])] values ( 值 1 )[, ( 值 n )]
mysql> insert into my values(1,'tom',0,96);
mysql> insert into my(name,sex,degree) values('evan',1,90);

查询表中的数据
mysql> select * from my;
+—-+——+—–+——–+
| id | name | sex | degree |
+—-+——+—–+——–+
| 1 | tom | 0 | 96.00 |
| 2 | evan | 1 | 90.00 |
+—-+——+—–+——–+

#前 2 行数据
select * from my limit 0,2;
select * from my order by id limit 0,2;

删除表中数据
命令:delete from 表名 where 表达式
delete from my where id=2;

修改表中数据
命令:update 表名 set 字段=新值,… where 条件
update my set name=’eva’ where id=1;
mysql> select * from my order by id limit 0,2;
+—-+——+—–+——–+
| id | name | sex | degree |
+—-+——+—–+——–+
| 1 | eva | 0 | 96.00 |
+—-+——+—–+——–+

在表中增加字段
命令:alter table 表名 add 字段 类型 其他;
例如:在表 MyClass 中添加了一个字段 pass,类型为 int(4),默认值为 0
mysql> alter table my add pass int(4) default '0';

更改表名
命令:rename table 原表名 to 新表名;
rename table my to mm;

更新字段内容
命令:update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名, ‘旧内容’, ‘新内容’);
update my set name='nick' where name='eva';
update my set name=replace(name,'jkjk','evan');

数据库导入导出

将数据库 com 中的 my 导出到 文件中
mysqldump -uroot -pevan com my > my.sql

数据库 mydb 的结构导出到 e:\MySQL\mydb_stru.sql 文件中
mysqldump -uroot -pevan com --add-drop-table >com.stru.sql

只导出数据不导出数据结构
mysqldump -u [数据库用户名] -p -t [要备份的数据库名称]>[备份文件的保存路径]
mysqldump -uroot -pevan -t com >com0.sql

#here
导出数据库中的Events
格式:mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径]

导出数据库中的存储过程和函数
格式:mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径]

从外部文件导入数据库中
1)使用“source”命令

2)使用 “<” 小于符号 *************************************** ##20160819 26.5.4 改变表结果 ALTER TABLE 数据表名 更改1 [,更改2 …] #添加TELPHONE 字段 ALTER TABLE employees add TELPHONE char(20); #更改字段 change alter table employees change TELPHONE TEL char(20); ##更改字段 类型 modify alter table employees modify TEL varchar(20); ##删除 字段 drop alter table employees drop tel; #表改名 rename alter table employees rename to emp; 26.5.5 复制数据表 CREATE TABLE 新表名 LIKE 源表名 create table employees2 like employees; #只复制了表结构, 要复制结构和数据的 为 create table emp3 select * from emp; 26.5.6 删除数据表 DROP TABLE tablename; 26.6 数据管理 26.6.1查询数据 SELECT * | 字段列表 FROM 数据表 WHERE 条件; 1.所以数据 select * from emp; 2.某些字段的数据 mysql> select EMPLOYEE_ID, last_name,salary from emp;
+————-+————+——–+
| EMPLOYEE_ID | last_name | salary |
+————-+————+——–+
| kyct | kyct@g.com | 9 |
+————-+————+——–+

3,满足某些条件的数据
mysql> select EMPLOYEE_ID, last_name,salary from emp where salary < 10000; +————-+————+——–+ | EMPLOYEE_ID | last_name | salary | +————-+————+——–+ | kyct | kyct@g.com | 9 | +————-+————+——–+ 4.查询数据的总数 mysql> select count(*) from emp;
+———-+
| count(*) |
+———-+
| 1 |
+———-+

26.6.2 插入
INSERT INTO 表名(字段1, 字段2, …) VALUES (值1,值2,…);
INSERT INTO 表名(字段1, 字段2, …) SELECT 字段1, 字段2, …) FROM 源表;

mysql> desc emp;
+—————+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+—————+————-+——+—–+———+——-+
| EMPLOYEE_ID | varchar(10) | NO | PRI | NULL | |
| FIRST_NAME | varchar(10) | NO | | NULL | |
| LAST_NAME | varchar(10) | NO | | NULL | |
| EMALL | varchar(50) | NO | | NULL | |
| HIRE_DATE | date | YES | | NULL | |
| JOB_ID | int(11) | NO | | NULL | |
| SALARY | int(11) | YES | | 0 | |
| MANAGER_ID | int(11) | YES | | NULL | |
| DEPARTMENT_ID | int(11) | NO | | NULL | |
+—————+————-+——+—–+———+——-+

mysql> insert into emp values (‘kyct’,’kyct’,’kyct@g.com’,7,’2016-08-20′,3,9,8,9);

insert into emp (employee_id,LAST_NAME,job_id) values (10888,’jim’,5);

2. 插入其它有的数据
mysql> create table emp2 like emp;
Query OK, 0 rows affected (0.34 sec)

mysql> select * from emp2;

mysql> insert into emp2 select * from emp where employee_id=10888;
Query OK, 1 row affected, 1 warning (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 1

mysql> select * from emp2;
+————-+————+———–+——-+———–+——–+——–+————+—————+
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
+————-+————+———–+——-+———–+——–+——–+————+—————+
| 10888 | | jim | | NULL | 5 | 0 | NULL | 0 |
+————-+————+———–+——-+———–+——–+——–+————+—————+

26.6.3 更新数据
UPDATE 表名 SET 字段1 = 值1 [,字段2 = 值2 …] WHERE 查询条件;

mysql> select * from emp2;
+————-+————+———–+——-+———–+——–+——–+————+—————+
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
+————-+————+———–+——-+———–+——–+——–+————+—————+
| 10888 | | jim | | NULL | 5 | 0 | NULL | 0 |
+————-+————+———–+——-+———–+——–+——–+————+—————+

mysql> update emp2 set emall=’jim@gamil.com’,salary=2000 where last_name=’jim’;

mysql> select * from emp2;
+————-+————+———–+—————+———–+——–+——–+————+—————+
| EMPLOYEE_ID | FIRST_NAME | LAST_NAME | EMALL | HIRE_DATE | JOB_ID | SALARY | MANAGER_ID | DEPARTMENT_ID |
+————-+————+———–+—————+———–+——–+——–+————+—————+
| 10888 | | jim | jim@gamil.com | NULL | 5 | 2000 | NULL | 0 |
+————-+————+———–+—————+———–+——–+——–+————+—————+

26.6.4 删除数据
DELETE FROM 表名 WHERE 查询条件;
delete from emp where last_name=’jim’;

26.7 索引管理

26.7.1 创建索引
mysql> create table depar (
-> depa_id char(10) not null,
-> depa_name varchar(50) not null,
-> mana_id char(10),
-> index ind_depa01 (depa_id) //创建索引ind_depa01
-> );

#上面为创建表depar的同时,在 depa_id 字段创建一个名为 ind_depa01 的索引
如果表已存在 CREATE INDEX

CREATE [UNIQUE] INDEX 索引名 ON 表名 (字段1 [,字段2 …]);
create unique index ind_depa02 on dep(EMPLOYEE_ID);

#表emp 的 EMPLOYEE_ID 字段上,创建一个名为 ind_depa02 的唯一索引
create unique index ind_depa02 on emp(EMPLOYEE_ID);

26.7.2 删除索引
DROP INDEX 索引名 ON 表名

26.8 用户和权限管理

mysql> select host,user,password,select_priv from user;
+———–+——————+——————————————-+————-+
| host | user | password | select_priv |
+———–+——————+——————————————-+————-+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | Y |
| debian | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
| 127.0.0.1 | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
| ::1 | root | *CB0AB6862555C52CBE5D736D089D8D56A468AE12 | Y |
| localhost | debian-sys-maint | *E7BF66CEE2E00177E47E00EDE25DAFADF8AADF17 | Y |
+———–+——————+——————————————-+————-+

26.8.2 用户管理

1.添加
#add user 记得要刷新权限表
insert into user (host,user,password) values(‘%’,’test’,password(‘123456’));
flush privileges;

2.更新口令
mysql> update user set password=password(‘1234′) where user=’test’;
mysql> flush privileges;

delete from user where user=’test’;

26.8.3 用户授权

GRANT 权限[(字段)] ON 数据库名.表名 TO 用户名@域名或者ip 地址 [ IDENTIFIED BY ‘口令’ ] [ WITH GRANT OPTION
];

1.授权数据库中所有的对象的权限
hr库中所有的表的查询权限授给 evan
grant select on hr.* to evan;

2.授权数据库中个别对象的权限

#库hr中数据表emp 的查询和更新权限授给 test用户
mysql> grant select on hr.emp to test;

mysql> grant update on hr.emp to test;

3.控制访问的主机
grant all on dbname.tablename to user@’ip’;

4.
授test 用户 hr.emp 表的删除权限,并允许test 把该项权限授其它的用户
grant delete on hr.emp to test with grant option;

5 创建用户

grant select on evan.emp to sam identified by ‘123’;

mysql> select host,user,password from user;
+———–+——————+——————————————-+
| host | user | password |
+———–+——————+——————————————-+
| % | test | *A4B6157319038724E3560894F7F932C8886EBFCF |
| % | evan | |
| % | sam | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+———–+——————+——————————————-+
CREATE USER evan@localhost IDENTIFIED BY ‘1234’;

26.8.4 回收权限
REVOKE 权限 [( 字段)] ON dbname.tablename from user@ip

revoke select on hr.* from test;

mysql创建用户以及授权

mysql创建用户以及授权

mysql授权查看

mysql授权查看–tag

26.9 mysql 备份恢复 (5种 mysqldump,mysqlhocopy,sql,binlog,直接备份数据文件 )

  • 26.9.1 mysqldump

1. 导出指定的表,不指定将导出库中的所有表
mysqldump [options] dbname [table]

2.导出一个多个指定数据库中的所有表
mysqldump [options] –database dbname1 [dbname2,…]

3.导出系统中所有数据库
mysqldump [options] –all-databases

常用的选项
–databases,-B 指定要导出的库
-default-character-set=charset_name 默认字符集
–ignore-table=dbname.tablename #忽略的表,不导出
–lock-all-tables, -X 导出前,锁定所以的数据表,保持系统数据的一致
–lock-tables, -l 锁定当前导出的数据表 #这个用处应该比较多
–log-error=filnename 保存错误和警告日志到文件
–no-create-db, -n 只导出数据,不导出CREATE TABLE 语句
–no-data, -d 只导出表结构,不导出数据
–routines, -R 导出存储过程和函数

1.备份表
mysqldump -uroot -p dbname table >table.sql

2.整个库
mysqldump -uroot -p –database dbname > db.sql

3.只导出表结构
mysqldump -uroot -p –no-data dbname table >table.sql

4.恢复数据
mysql -uroot -p dbanne < file.sql
或者 source

****************************************************************

  • 26.9.2 mysqlhotcopy 感觉不好用
    其实是使用lock tables cp scp 来完成备份的 只能备份myisam存储引擎

1.备份

2.恢复 直接是 cp -Rf src targer

  • 26.9.3 使用SQL语句备份和恢复

BACKUP TABLE ,SELECT NITO OUTFILE

  • 26.9.4 二进制日志(binlog)

恢复
mysqlbinlog -d games_s25 --start-datetime="2016-07-25 02:05:00" --stop-datetime="2016-07-25 04:40:00" "mysql-bin.000201" | mysql -uroot -ppassword

  • 26.9.5 直接备份数据文件 ,flush tablename with read lock;#会比较 好

MySQL基本操作

http://dufei.blog.51cto.com/382644/88646