查看mysql配置文件位置
/usr/sbin/mysqld --verbose --help | grep -A 1 'Default options'
查看数据存放位置
show global variables like "%datadir%"
创建root用户
create user 'username'@'%' identified by 'password';
grant all privileges on *.* to username@"%";
flush privileges;
允许远程访问
vim /etc/my.cnf
注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1
mysql 创建登陆文件(测试只能连本机的数据库,不能连远程)
mysql_config_editor set --login-path=bb --host=localhost --port=3306 --user=root --password
输入一次密码,这样,在用户目录就生成了一个隐藏的秘钥文件,.mylogin.cnf保存的就是登录用户和密码,内容已经加密
修改密码
update user set authentication_string =password('123') where user='root' and host='localhost';
用户变量:变量名的形式为@varname; set @a = 1;
系统变量:全局变量 与 会话变量。系统定义的全局变量都是以@@开头;没有指定是GLOBAL还是SESSION,当做SESSION处理。
set global sort_buffer_size = 40000; 或者 set @@global.sort_buffer_size = 40000;
set session varname = value; 或者 set @@session.varname = value;
设置wait_timeout
SHOW SESSION VARIABLES LIKE "%wait%";
SET session wait_timeout=300;
SHOW SESSION VARIABLES LIKE 'wait_timeout';
SHOW VARIABLES LIKE '%max_connections%';
set global max_connections=1024;
查看连接数,状态
show processlist;
只列出前100条;如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show full processlist;
杀掉一个连接进程:kill [id],比如:kill 15;
数据来自表 :information_schema.processlist
查看innodb 行锁的状态
show status like 'innodb_row_lock_%';
mysql 死锁分析
show variables like 'innodb_deadlock_detect';
show variables like 'innodb_lock_wait_timeout';
SHOW ENGINE INNODB STATUS
https://dev.mysql.com/doc/refman/5.7/en/innodb-deadlocks.html
查看慢查询相关参数
show variables like 'slow_query%';
show variables like 'long_query_time';
设置方法
方法一:全局变量设置
set global slow_query_log='ON';
set global slow_query_log_file='/usr/local/mysql/data/slow.log';
set global long_query_time=1;
方法二:配置文件设置 修改配置文件my.cnf,在[mysqld]下的下方加入
[mysqld]
slow_query_log = ON
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1
service mysqld restart
测试
select sleep(2);
ls /usr/local/mysql/data/slow.log
sql 命令 add, drop,modify 顺序
alter table 表名 add column 字段名 MEDIUMTEXT binary;
alter table 表名 drop column 字段名;
alter table 表名 modify 字段名 字段类型 after 字段;
alter table car_order add column meetingid int(11) UNSIGNED not null default 0 after carid ;
查看索引
show index from 数据库表名
创建索引
alter table 数据库 add index 索引名称(数据库字段名称)
PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
查询当前时间戳
select unix_timestamp(now());
插入多条
insert into table1 (b ,c) select b,c from table2;
更新多条
update role2 b set b.gem =(select gem11 from tmp c where c.rid2=b.rid);
备份sql
mysqldump --login-path=bb -h host1 -P port1 database > /bak/db_$(date +%Y%m%d).sql
mysqldump --login-path=bb -h host1 -P port1 database table > /bak/db_$(date +%Y%m%d).sql
mysqldump -uroot -p'123123' dbname> dbname.sql
导入sql
mysql --login-path=bb database < ./test.sql
source命令
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:/dbname.sql
mysqldiff (brew install mysql-utilities 比较db_1 和 db_2的差异)
mysqldiff --server1=root:@localhost --server2=root:@localhost --changes-for=server2 --show-reverse --difftype=sql db_1:db_2
定时执行 删除旧数据库文件 命令
crontab -e
30 3 * * * find /bak -mtime +5 -name 'db*.sql' -exec rm -rf {} ;
每天凌晨3点半删除5天以前的旧数据文件。
-mtime +n,-n, n (+n n*24 hours以前,-n n*24 hours 以后,n n*24 hours 以内)
-exec 后面跟要执行的命令
{} 命令之前的参数列表
; 结束命令
mac mysql 8.0/sequel pro 配置
#修改加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)
#更新用户密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.00 sec)
#刷新权限
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
#修改用户密码
mysql> alter user 'root'@'localhost' identified by 'mysql账户密码';
Query OK, 0 rows affected (0.00 sec)
https://sequelpro.com/test-builds 升级测试版本sequelpro