修改MySQL数据存储路径

最近新起了个MySQL,服务器上是一个小一点的SSD,搭配一个大容量机械硬盘的方案,默认存储的/var/lib/mysql会在SSD里,所以需要修改MySQL数据库的数据存储路径。当我尝试了修改/etc/mysql/中的配置文件,并将/var/lib/mysql文件夹内文件全部复制之后,重启服务发现,服务起不来了。查看日志发现是Mysql没有新的文件夹的访问权限。

那这就奇怪了,文件权限都是正常的,文件属主也在mysql上,后来才发现,是因为ubuntu系统的apparmor服务导致的。

/etc/apparmor.d/usr.sbin.mysqld 这个文件中,有这两行,规定了mysql使用的数据文件路径权限

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

那么我只需要在下面增加我需要的两个文件夹,就可以顺利开启权限了

/home/base/mysql r,
/home/base/mysql/** rwk,

完事之后,记得重启服务

sudo service apparmor restart

这样就OK了

Oracle数据库自增主键

create table TEAM_MAJOR_WORK
(
  pkid                NUMBER(7) not null,
  team_no            VARCHAR2(16) not null,
  ymonth              VARCHAR2(6) not null,
  iwork_plan             CLOB,
  iwork_desc             CLOB,
  iwork_result        CLOB,
  teamld_evluate      CLOB,
  depld_evluate      CLOB,
  cr_date             DATE default sysdate not null
);



--创建seq
create sequence TWORK_ID_SEQ start with 100000 increment by 1 maxvalue 999999;



--创建触发器
create or replace trigger TR_MAJOR_WORK
  before insert on TEAM_MAJOR_WORK
  for each row
  when (new.pkid is null)
begin
  select TWORK_ID_SEQ.NEXTVAL into:new.pkid from dual;
end;

--查询触发器
select * from all_triggers tr where tr.TRIGGER_NAME='TR_MAJOR_WORK';

Mysql修改默认root密码

1)、use mysql;                   #连接到mysql数据库
2)、update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';    #修改密码123456是密码
3)、update user set  plugin="mysql_native_password";     
4)、flush privileges;
5)、quit;

SQL中替换函数

我迁移wordpress到临时服务器上时遇到的问题,老的域名为home.daijiyu.cn,新的域名为s.daijiyu.cn,迁移时使用自动备份插件仅能恢复出原来的数据库内容,链接和图片的地址还是原来的,导致大量图片不显示。解决方案是使用SQL语句对数据库中文章里的图片地址进行替换,替换语句如下:

update `wp_posts` set `post_content`=replace(post_content,'home.daijiyu.cn','s.daijiyu.cn')

数据库JOIN语句使用经验

SQL LEFT JOIN 关键字

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

LEFT JOIN 关键字语法

SELECT column_name(s)
  FROM table_name1
LEFT JOIN table_name2 
  ON table_name1.column_name=table_name2.column_name
一张cheatsheet