MySQL 常用操作

139 阅读2分钟

演示表:

CREATE TABLE `partitions4p` (
    `PART_ID` bigint(20) NOT NULL,
    `CREATE_TIME` int(11) NOT NULL,
    `LAST_ACCESS_TIME` int(11) NOT NULL,
    `PART_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
    `SD_ID` bigint(20) DEFAULT NULL,
    `TBL_ID` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`PART_ID`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1 PARTITION BY KEY (PART_ID) PARTITIONS 4;

1. 权限、登录

-- 查看初始密码
cat /root/.mysql_secret | grep password

-- 设置密码为123456
mysql -pf6SdIT5Q92X9YCcp -uroot
SET PASSWORD = PASSWORD('123456');    
-- 等同
use mysql;
update user set password=password('123456') where user='root';

-- 远程登陆用户设置 
mysql -uroot -p123456
use mysql;
select host,user,password from user;
update user set host='%' where user='root' and host='localhost';
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;

2. 表

-- 备份
create table partitions_bak select * from partitions;
-- 插入另一个表的数据
insert into partitions_bak select * from partitions;

3. 字段

-- 修改表字符集
alter table partitions modify `PART_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL;

4. 函数

-- 字符串拼接
select concat('alter table ',TABLE_NAME,' drop foreign key ',CONSTRAINT_NAME,';') from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA ='db_name' and REFERENCED_TABLE_NAME = 'partitions';

5. 索引

-- 添加索引
alter table partitions add key uniquepartition (tbl_id);
-- 添加联合唯一
alter table partitions add unique key uniquepartition (part_name, tbl_id);

6. 外键

-- 查询partitions4p的外键
selectTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME 
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
where CONSTRAINT_SCHEMA ='db_name' 
AND REFERENCED_TABLE_NAME = 'partitions4p';
-- 删除partitions4p的外键
Alter table 表名 drop foreign key 外建名;

7. 表分区

-- 查询一个表的表分区
SELECT
    PARTITION_NAME,
    PARTITION_METHOD,
    PARTITION_EXPRESSION,
    PARTITION_DESCRIPTION,
    TABLE_ROWS,
    SUBPARTITION_NAME,
    SUBPARTITION_METHOD,
    SUBPARTITION_EXPRESSION
FROM
    information_schema.PARTITIONS
WHERE
    TABLE_SCHEMA = SCHEMA()
    AND TABLE_NAME = 'partitions4p';

image.png

8. 数据导入、导出

-- 表结构
mysqldump -uroot -P3306 -p123456 -hlocalhost --single-transaction -d db_name > db_tables.sql

-- 数据和表结构
mysqldump -uroot -hlocalhost -P3306 db_name --single-transaction=true 
--skip-add-locks --skip-add-drop-table --skip-disable-keys > db_tables_data.sql

9. 启动命令

service mysql start
service mysql status
service mysql stop
service mysql restart

10. 相关路径

数据库目录: /var/lib/mysql/
配置文件: /usr/share/mysql
相关命令: /usr/bin
启动脚本: /etc/rc.d/init.d/

11. 常用配置

-- 慢sql
show variables like '%slow%';
set global slow_query_log='ON';
-- 数据目录
show variables like '%datadir%';
或
select @@datadir;

12. rpm方式安装

-- 删除现有
rpm -qa | grep -i mysql
rpm -qa|grep mariadb
rpm -e --nodeps 包名
-- 安装
tar -xvf MySQL-5.6.36-1.linux_glibc2.5.x86_64.rpm-bundle.tar
rpm -ivh MySQL*.rpm

13. 查看并指定数据存储路径

修改 datadir,socket和pid_file三个路径
修改mysql配置文件中的datadir和socket: vim /etc/my.cnf
datadir=/dev/mysqldata/mysql
socket=/dev/mysqldata/mysql/mysql.socket
修改: vim /etc/init.d/mysqld
get_mysql_option datadir "/dev/mysqldata/mysql" mysql
datadir="$result"
get_mysql_option socket "$datadir/mysql.socket" mysql
socketfile="$result"
重启