众所周知,MySQL的主要版本已经来到了8.0,ubuntu的软件仓库也已经将MySQL的默认版本更新到了8.0,在20.04以上的发行版中,默认软件仓库无法安装MySQL5.7的版本,下面介绍安装方法。
修改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
