概述
总结的一些 MySql 操作命令
MySql 安装
下载地址
https://dev.mysql.com/downloads/mysql/
示例,从上面页面中查找到最新 deb 文件,修改文件名字即可
wget https://repo.mysql.com//mysql-apt-config_0.8.33-1_all.deb
安装命令
# 查看软件包中包含的文件结构
sudo dpkg -c mysql-apt-config_0.8.29-1_all.deb
# 安装软件包
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt update
# 查看软件信息
apt info mysql-server
# 在安装期间,需要选择mysql server和组件的版本。不能确定版本,就不要改变默认版本。如果不想安装某一个组件,就选择none。选择完毕后,选择ok就可以完成安装。
sudo apt-get install mysql-server
执行安装命令后,按照提示进行安装即可。
MySql 修改默认端口
vi /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
port = 10000
MySql 服务启动
sudo /etc/init.d/mysqld start
or
sudo service mysqld start
用户管理
创建用户
CREATE USER 'octopus'@'%' IDENTIFIED BY 'octopus';
删除用户
drop user 'octopus'@'%';
数据管理
创建数据库
drop database testdb;
CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON testdb.* TO octopus@'%';
# 查询权限用户
GRANT SELECT ON testdb.* TO octopus@'%';
FLUSH PRIVILEGES;
with grant option 作用是:对象的 owner 可以将权限赋予某个用户,普通用户不用授予此权限。
撤销授权
revoke all privileges,grant option from 'user_name'@'host';
导入导出
导出表结构
mysqldump -h192.168.1.160 --opt --set-gtid-purged=OFF -d testdb -uoctopus -p > ddl-testdb-20160912.sql
导出数据
mysqldump -t -h192.168.1.160 --set-gtid-purged=OFF testdb -uoctopus -p > data-testdb-20160912.sql
导出表结构与数据
mysqldump -uoctopus -p --default-character-set=utf8 testdb > testdb-20160912.sql
mysqldump -uoctopus -p --default-character-set=utf8 --set-gtid-purged=OFF testdb > testdb-20160912.sql
mysqldump -uoctopus -p --default-character-set=utf8 -ntd -R testdb > testdb-20160912.sql
mysqldump -uoctopus -p --default-character-set=utf8 -h192.168.1.160 -P10002 testdb > testdb-20160912.sql
其中,-ntd 是表示导出存储过程;-R 是表示导出函数;-P 指定端口号;
导入sql脚本
- 方式一:
mysql -h192.168.1.160 -uoctopus -p testdb < testdb-20160912.sql
- 方式二:先登录数据库,然后执行命令(这种方式将顺序执行脚本,如果数据量大,不建议使用此种方式):
mysql > source testdb-20160912.sql
其他
/etc/init.d/mysql: ERROR: The partition with /var/lib/mysql is too full!
磁盘空间被占满导致无法启动服务,可使用 du -sh ./* 来查看 /var 下的文件大小详情,释放一些空间,再使用启动命令 /etc/init.d/mysql start 启动。
MySQL 启动慢查询日志
查看慢查询相关参数:
show variables like 'slow_query%';
方式一:命令设置:
set global slow_query_log='ON';
set global long_query_time=1;
方式二:配置文件设置:(配置后需重启服务)
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/run/mysqld/mysqld-slow.log
long_query_time = 1
sql_mode 修改
临时修改方案:
select @@global.sql_mode;
set @@global.sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
永久修改方案:
修改 /etc/my.cnf 文件中 [mysqld] 模块下添加如下配置:
sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com