Mysql常用操作

常用操作

mysql -h localhost -u root -proot

// 删除数据库
drop database aaa

// 创建数据库 aaa
CREATE DATABASE aaa DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

// 导出数据库
mysqldump -h localhost -u root -proot --opt -d bbb --default-character-set=utf8 > bbb.sql
mysqldump -h localhost -u root -proot bbb --default-character-set=utf8 > bbb.sql

// 导入数据库
mysql -h localhost -uroot -proot --default-character-set=utf8 ccc < ccc.sql

修改用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

创建新用户

CREATE USER 'dbname'@'localhost' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'dbname'@'localhost'

5.6 版本初次的密码修改

mysql -u root mysql

UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

\q 

删除指定前缀表

Select CONCAT( 'drop table ', table_name, ';' ) 
FROM information_schema.tables 
Where table_name LIKE 'ts_blog%' and TABLE_SCHEMA='sxpt_info';


常用操作

mysql -h localhost -u root -proot


// 按表的创建时间,查询 gf_myw 数据库中的表信息
SELECT table_name,create_time,UPDATE_TIME,TABLE_COMMENT FROM &nbsp;information_schema.TABLES
WHERE TABLE_SCHEMA='gf_myw'
ORDER BY CREATE_TIME DESC


// 查询mysql下的所有用户
select user,host from mysql.user;

// 删除用户
delete from mysql.user where user='gf';
drop user 'gf'@'localhost';


create user 'the-moment'@'localhost' identified by 'xxxxxx';
grant select,insert,update,delete,create,alter on `the-moment`.* to `the-moment`@'localhost';

-- 这个比较全面
grant all privileges on `gf_new`.* to `gf`@'localhost';

// 给用户修改数据库的权限
UPDATE user SET alter_priv='Y' WHERE User = 'se-server';

FLUSH PRIVILEGES;


// 查询某个数据库占用空间大小
select sum(DATA_LENGTH)+sum(INDEX_LENGTH) from information_schema.tables&nbsp;
where table_schema='数据库名';

// 修改密码
set password for root@localhost = password('123');

// 删除数据库
drop database sxpt_info

// 创建数据库 sxpt_info
CREATE DATABASE sxpt_info DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `the-moment` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

// 导出数据库
mysqldump -h localhost -u root -proot --opt -d ucai_info --default-character-set=utf8 > ssy_info.sql
mysqldump -h localhost -u root -proot ucai_info --default-character-set=utf8 > ssy_info.sql

// 导入数据库
mysql -h localhost -uroot -proot --default-character-set=utf8 ssy_info < ssy_info.sql

// 查询数据库的类型: MyISAM 还是 InnoDB。 InnoDB 为带数据库事务的。
show variables like '%storage_engine%';

// 检查唯一性
select id,username,mobile from sys_user where mobile in ( select mobile from sys_user group by mobile HAVING count(mobile)>1 &nbsp;)

修改用户密码(测试不可用)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

 



mysqldump: Couldn't execute 'SELECT @@GTID_MODE': Unknown system variable 'GTID_MODE' (1193)

https://blog.csdn.net/zhouhong1026/article/details/38873439
成此错误的原因是因为5.6引入了Global Transaction Identifiers (GTIDs) 。GTIDs可以让主从结构复制的跟踪和比较变得简单。
mysqldump会试图查询这个系统变量,但这个变量在5.6之前的版本中不存在,所以产生错误。
D:\mysql\bin\mysqldump --set-gtid-purged=OFF -h localhost --port=3307 -u root -p exam_hnxtl --default-character-set=utf8 > exam_hnxtl.sql

创建mysql 服务

mysqld --install  Mysql5.6

 

5.6 版本初次的密码修改

mysql -u root mysql

use mysql

UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

\q 

忘记Root密码的解决办法

linux

// 找到[mysqld],添加skip-grant-tables这一行
vi /etc/my.cnf

// 重启服务
service mysql restart

mysql -uroot -p

回车

// 设置密码
update mysql.user set password=password('123456') where User="root" and Host="localhost";

// 设置权限
grant all on *.* to 'root'@'localhost' identified by '123456' with grant option;

https://www.osyunwei.com/archives/2014.html

 

 

windows

MySQL 忘记Root密码的解决办法

https://www.cnblogs.com/wxdblog/p/6864475.html

修改密码过程中遇到的问题

MYSQL服务无法启动:InnoDB: .\ibdata1 can't be opened in read-write mode

https://blog.csdn.net/caisinan_csdn/article/details/51393204

无法启动MYSQL服务”1067 进程意外终止”解决的方法——汇总及终极方法

https://www.cnblogs.com/yfceshi/p/6897668.html

删除指定前缀表

Select CONCAT( 'drop table ', table_name, ';' ) 
FROM information_schema.tables 
Where table_name LIKE 'ts_blog%' and TABLE_SCHEMA='sxpt_info';

Windows Server 2012 安装 MySQL

MySQL5.6

安装 5.7

 

standalone mysql / classic mysql replication

innodb 服务器集群

 

server machine

 

 

用百度网盘中的 安装包 mysql-5.6.24-winx64.msi

https://pan.baidu.com/s/1ojxNPSaG-ltw8E8uihkG8g

1. 注册服务

// 进入安装bin目录

mysqld --install  Mysql5.6

注册成功后,启动服务

2. 修改用户密码

 

mysql -u root mysql

UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

\q 

重启服务

3. 开启远程访问

打开防火墙端口3306

mysql -u root mysql

UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host='%';

FLUSH PRIVILEGES;//记得要这句话,否则如果关闭先前的终端,又会出现原来的错误

\q

重启服务

方法2:

利用 Navicat 工具,添加 用户 root@%, 授予服务器 全部权限 执行

 
问题及解决

navicat 连接出错

Access denied for user 'root'@'bogon' (using password: YES)

【解决办法】重启服务

MySQL5.7 测试失败

GA: General Available

 

 

GA: General Available

https://dev.mysql.com/downloads/windows/installer/8.0.html

https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-8.0.13.0.msi

 

下载吧下载安装包:

https://xiazai.xiazaiba.com/Soft/M/MySQL_5.7.18_x64_XiaZaiBa.zip

注册服务
mysqld --install  Mysql5.7


// 如果注册错了,可以移除服务
sc delete Mysql5.6

 

Windows 不区分表大小写问题

按照此方法

https://zhidao.baidu.com/question/2267340607864742028.html

 

show variables like 'lower_case_table_names';

 

修改 my.ini 里面的mysqld部分。 

Win10 中配置文件目录在: C:\ProgramData\MySQL\MySQL Server 5.7\my.ini

#区分大小写

lower_case_table_names=2

修改表名的存储过程,从小写转换成大写字母的表

加入了判断表前缀 “act_” 和 "qrtz_" 的判断

 
CREATE PROCEDURE uppercase(IN dbname VARCHAR(200))  

BEGIN 
BEGIN 
    
DECLARE done INT DEFAULT 0;  
    
DECLARE oldname VARCHAR(200);  
    
DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = dbname;  
    
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
    
OPEN cur;  
    
REPEAT  
    
FETCH cur INTO oldname;  
    
SET @newnametmp = CONCAT(oldname, '2');  
SET @newname = UPPER(oldname);  
    
-- select @newnametmp;

 -- select @newname;
#IF newname equals to oldname, do nothing;  
#select 'a' <> 'A'; -> 0  
#select 'a' <> BINARY 'A'; -> 1  
# SET @isNotSame = @newname <> BINARY oldname;  

SET @isAct =  instr(@newname, 'ACT_');
SET @isQrtz =  instr(@newname, 'QRTZ_');
    
-- select @isAct;

IF NOT done && (@isAct > 0 || @isQrtz > 0) THEN 

SET @SQL2 = CONCAT('rename table ',oldname,' to ',@newnametmp);  

-- select @SQL2;

    
PREPARE tmpstmt2 FROM @SQL2;  
    
EXECUTE tmpstmt2;  
    
DEALLOCATE PREPARE tmpstmt2;  
    

SET @SQL = CONCAT('rename table ',@newnametmp,' to ',@newname);  

-- select @SQL;

    
PREPARE tmpstmt FROM @SQL;  
    
EXECUTE tmpstmt;  
    
DEALLOCATE PREPARE tmpstmt;  
    
END IF;  
    
UNTIL done END REPEAT;  
    
CLOSE cur;  

END

 

调用

call uppercase('gf_new');

删除

DROP PROCEDURE IF EXISTS uppercase

 

其他资料

https://www.cnblogs.com/jonnyan/p/9316733.html

centos 下自动备份脚本

测试可以用的:

文件 /usr/sbin/bakmysql.sh 内容如下:

// 编辑文件命令(这行不要拷贝)

vi /usr/sbin/bakmysql.sh

// 下面为 执行任务脚本内容:
#DATE=`date +%Y%m%d%H%M`     #every minute
DATE=`date +%Y%m%d` #every day
DATABASE=dbname             #database name
DB_USER=root                #database username
DB_PASS=123456				#database password
BACKUP=/root/bak            #backup path

/usr/bin/mysqldump -u$DB_USER -p$DB_PASS -h 127.0.0.1 --default-character-set=utf8 ${DATABASE} > ${BACKUP}\/${DATABASE}_${DATE}.sql

// 文件到这里结束

// 添加权限
chmod +x /usr/sbin/bakmysql.sh

// ​创建目录
mkdir /root/bak 

// 测试是否执行成功

sh /usr/sbin/bakmysql.sh



// 编辑任务列表
crontab -e


## 测试用,每分钟执行一次
*/1 * * * * /usr/sbin/bakmysql.sh


## 实际用,每天凌晨3点执行1次
0 3 * * * /usr/sbin/bakmysql.sh


service crond restart

 

 

建立脚本文件,内容为:

mysqldump -h localhost -u root -proot dbname --default-character-set=utf8  > dbname-`date +%Y%m%d`.sql

 

编辑/etc/crontab

vi /etc/crontab

0 3 * * * ./root/script.sh
表示每天3点钟执行一次备份


分  时  日  月  周  命令

第1列表示分钟1~59 每分钟用*或者 */1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

/etc/rc.d/init.d/crond restart

 

 

https://www.jb51.net/article/58826.htm

 

centos7 下的定时任务

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态:service crond status

直接分配

#crontab -e

 

https://www.cnblogs.com/lzhp/p/6087525.html

 

Windows Server 下的自动备份

windows server环境mysql数据库每天自动备份

https://blog.csdn.net/baidu_24248003/article/details/86535436

 

@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
"E:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump" --opt -u root --password=abc2018 xgwallet > E:\db_backup\xgwallet_%Ymd%.sql
@echo on

centos 下安装 mysql

安装指令

yum -y install mysql-server mysql mysql-devel

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

检测已安装的mysql

yum list installed | grep mysql

 

// 查看已安装的mysql
yum list | grep mysql

// 
yum -y install mysql-server mysql mysql-devel

 

查看服务

systemctl status mysqld.service -l

 

 

参考文章:

centos6.8 yum安装mysql 5.6

https://blog.csdn.net/xiegh2014/article/details/72860951

 

 

CentOS 7 下安装mysql

卸载已安装的mysql

yum remove mysql-community mysql-community-server mysql-community-libs mysql-community-common

yum remove mysql-community-release 

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm   

sudo yum install mysql-server  

好像mysql安装中会产生默认的root密码,登录进去就可以修改成功。可文章找不到了。

 

允许其他 IP地址 访问数据库

参考: https://www.cnblogs.com/gdsblog/p/7349551.html

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
select host,user from user;

 

 

参考:https://blog.csdn.net/a774630093/article/details/79270080

 

参考 https://www.cnblogs.com/Lenbrother/articles/6203620.html

 

查看 mysql 进程
ps -A|grep mysql

 

 

// 启动mysql
service mysqld start

service mysqld stop

Docker 方式安装

docker run -p 3307:3307 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6

阿里云 中 docker 下载加速(参考博客地址未保存)

{
"registry-mirrors": ["https://f1812b6c.mirror.aliyuncs.com"]  
}

 

测试操作

docker exec -it mymysql bash

mysql -uroot -proot

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; 

FLUSH PRIVILEGES;  


// docker 镜像与本机互传文件
/var/lib/docker/devicemapper/mnt/159fb94d02b20205e493c6e98277f3da3af8641d9811f379bcd46eec11690a6a

参考 https://blog.csdn.net/l6807718/article/details/51659865

 

知识点积累

建立索引

CREATE INDEX indexName ON tableName(col(255))

hash 与 btree 索引的区别

http://www.cnblogs.com/vicenteforever/articles/1789613.html

 

获取长度小于数值的代码

select * from tableName where length(col)<15 

 

删除重复记录并保留最小编号的记录

delete FROM tableName WHERE    
    sameCol IN (
         SELECT sameCol FROM (
            select sameCol from tableName group by sameCol having count(sameCol) > 1
         ) as a
    )
    and id not in (
        select id from (
            select min(id) as id from tableName group by sameCol having count(sameCol) > 1
        ) as b
    )

参考:https://blog.csdn.net/songtaiwu/article/details/79445787

Mysql链接工具 Navicat

安装方法

https://blog.csdn.net/wypersist/article/details/79834490

Mac 下 MAMP 软件的 mysql 管理

http://www.zhimengzhe.com/mac/126434.html

/Applications/MAMP/Library/bin/mysql -uroot -p 

 

开通外网访问

在主界面上勾选,支持外网即可

https://www.cnblogs.com/jidongdema/p/6525355.html

 

数据量优化

MySQL单表大约在2千万条记录(4G)下能够良好运行,经过数据库的优化后5千万条记录(10G)下运行良好。

https://www.cnblogs.com/qihuan/p/4210489.html

读写分离方式

https://blog.csdn.net/buster2014/article/details/50933092

 

MySQL能够承受上亿万条的数据量的架构

https://www.cnblogs.com/Leo_wl/p/3251806.html

 

水平和垂直分表分库包括对业务进行拆分治理来达到大规模的网站数据处理能力

像今日头条这种数量级,用什么数据库架构方式合适?

https://yq.aliyun.com/ask/49249?spm=a2c4e.11153987.0.0.471a628eNrzATx

 

单机 MySQL 数据库可以支撑多大数据量?

https://www.zhihu.com/question/25285004

 

MYSQL千万级数据量的优化方法积累

https://www.cnblogs.com/future2012lg/archive/2013/03/04/2942308.html

 

使用MySQL处理百万级以上数据时,不得不知道的几个常识

https://blog.csdn.net/lynnucas/article/details/50265325

连接数据库的问题:建立连接和关闭连接的次数太多,导致IO访问次数太频繁。

 

decimal 插入数据失败问题

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value f

https://blog.csdn.net/u010448530/article/details/81170416

 

61657582063054508286124930362303840256.000000

20,小数位数4,

说明整数部位 只有 16位

 

 

获取整数位数

int len = val.setScale(0,BigDecimal.ROUND_DOWN).toString().length();

// 超出数据库中字段设置的14长度,直接设置错误
if (len > 14) {
    val = new BigDecimal(-1);
}

常见问题

MySQL报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

MySQL报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause

https://blog.csdn.net/Hu531053/article/details/102793482

 

select version(),
@@sql_mode;SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

 

 

连接数过多

MySQL提示“too many connections”的解决办法

https://www.cnblogs.com/shamo89/p/6707898.html

show processlist

kill 1180421; 

 

说明,

系统支持的最大连接max_connections

用户能最大连接进来的数量max_user_connections

 

// 查看 
show variables like 'max_connections';

// 修改最大连接数
SET GLOBAL max_connections = 152;

 

(注意上面命令的大小写)

修改完成后实时生效,无需重启MySQL。

 

 

别忘记在配置文件里添加否则重启失效

max_connections=1000;

max_user_connection=600

以上设置,为自己和其他用户预留几个连接空闲

MySQL的最大连接数,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。

https://blog.csdn.net/h106140873/article/details/78852185

MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
 这个参数实际起作用的最大值(实际最大可连接数)为16384,即该参数最大值不能超过16384,即使超过也以16384为准;

 

https://blog.csdn.net/lzwglory/article/details/78752563

MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0/dbcp 连接池则以为该被断开的连接依然有效。在这种情况下,如果客户端代码向c3p0/dbcp 连接池请求连接的话,连接池就会把已经失效的连接返回给客户端,客户端在使用该失效连接的时候即抛出异常。

 

interactive_timeout

默认是28800,单位秒,即8个小时

The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect(). See also wait_timeout.

wait_timeout

默认同样是28800s

控制连接最大空闲时长的wait_timeout参数。

商业版收费情况

MySQL 用免费版就可以了,企业版相当于是多了技术支持服务的费用,一年大概费用是3~4万,咱们不需要。

 

mysql数据库商业版与社区版的区别

https://blog.51cto.com/13688462/2095036

 

MyISAM与InnoDB两者之间区别与选择

https://www.cnblogs.com/y-rong/p/8110596.html

免费版GPL收费情况 【不修改源码是不用收费的】

https://blog.csdn.net/sunnylion1982/article/details/16817901

 

企业版服务 费用 : 一年约 3.5万

https://shop.oracle.com/apex/f?p=DSTORE:PRODUCT:::NO:RP,6:P6_LPI:60720318189220530576677

企业版主要是提供客户服务

 

 

数据同步

复制(Replication),
https://bbs.csdn.net/topics/370044057

mysql 的重做日志

要求具有 binlog 的读写权限

 

 

    
python:
    mysqlsmom
    https://mysqlsmom.readthedocs.io/en/latest/hello.html

    同步到 es。 Elactric Search
    或 基于更新时间的增量同步

 

服务器集群

https://blog.csdn.net/boy_chen93/article/details/89452778

 

操作记录

mysqld --initialize-insecure --basedir="C:\Program Files\MySQL\MySQL Server 5.7" --datadir="C:\ProgramData\MySQL\MySQL Server 5.7\Data\3307" --user=mysql

mysqld --defaults-file="C:/ProgramData/MySQL/MySQL Server 5.7/Data/3307/my.cnf"
mysqld --defaults-file="C:/ProgramData/MySQL/MySQL Server 5.7/Data/3308/my.cnf"
mysqld --defaults-file="C:/ProgramData/MySQL/MySQL Server 5.7/Data/3309/my.cnf"

 

// 关闭的代码

./mysqladmin -uroot -p -P3307 -h127.0.0.1 shutdown

 

主服务器

'''从服务器'''

<pre>stop slave;
reset slave;

change master to master_host='192.168.1.104',master_user='copy',
master_port=3307,master_password='123456',
master_log_file='mysql-bin.000002',master_log_pos=437;

start slave;  

show slave status; 

 

 

 

找不到日志文件

Got fatal error 1236 from master when reading data from binary log: 'Could not open log file'

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=154;

尝试 将数据文件 从 C盘的某个文件夹 换到 D盘试试

 

 

 

开启日志文件失败

Aborting' not found (Errcode: 13 - Permission denied

尝试 将数据文件 从 C盘的某个文件夹 换到 D盘试试

数据库自动结构导出

SELECT
TABLE_NAME 表名,
COLUMN_NAME 列名,
COLUMN_TYPE 数据类型,
	(
		CASE
		WHEN column_key = 'PRI' THEN
			'√'
		ELSE
			''
		END
	) 主键,
COLUMN_COMMENT 注释
FROM
information_schema.`COLUMNS`
WHERE
TABLE_SCHEMA='gf_temp'   
AND
table_name like 'tb_%'  

 

https://blog.csdn.net/cxh6863/article/details/84499255

 

Ubuntu 内存占用太高

当前Linux下,内存占用情况多达 1G 多

 

performance_schema = off

 

优化内存不足的mysqld设置

https://www.kutu66.com//ubuntu/article_161849

 

MySQL 进程多开

https://blog.csdn.net/zougen/article/details/79567744

 

不应该叫多开 mysql 进程了,其实 就是另外启动一个进程来处理数据。

 

 

lnmp 下的启动另外进程的步骤

cp /etc/my.cnf my_13306.cnf

cd /tools/tools/mysql-13306/

chown mysql:mysql /tools/tools/mysql-13306/ -R

vi my_13306.cnf

my_13306.cnf

更新:关闭了启动优化内存,修改了日志配置的路径

[client]
#password &nbsp; = your_password
port &nbsp; &nbsp; &nbsp; &nbsp;= 13306
socket &nbsp; &nbsp; &nbsp;= /tmp/mysql13306.sock

[mysqld]
port &nbsp; &nbsp; &nbsp; &nbsp;= 13306
socket &nbsp; &nbsp; &nbsp;= /tmp/mysql13306.sock
datadir = /tools/tools/mysql-13306/data
skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000
performance_schema = off

explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log-bin=/tools/tools/mysql-13306/data/mysql-bin
binlog_format=mixed
server-id &nbsp; = 13306
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_data_home_dir = /tools/tools/mysql-13306/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /tools/tools/mysql-13306/data
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer_size = 768K
write_buffer_size = 2M

[mysqlhotcopy]
interactive-timeout

在上面更新了:  socket,innodb_data_home_dir,innodb_log_group_home_dir 等 路径上面的变化

 

创建好对应的文件夹 路径后, 尤其注意  data 目录为空: 初始化数据库 的步骤如下:

// 初始化
/usr/local/mysql/bin/mysqld --defaults-file=/tools/tools/mysql-13306/my_13306.cnf --initialize-insecure --user=mysql

// 后台 启动 mysql 应用
/usr/local/mysql/bin/mysqld_safe --defaults-file=/tools/tools/mysql-13306/my_13306.cnf --user=mysql &

// 客户端连接代码
mysql -uroot -p -P 13306 -S /tmp/mysql13306.sock

 

远程连接字符串不需要加 -S 参数

终止MySQL的服务

lnmp mysql stop

top

找到 mysql 进程id

kill -9 116535

 

优化内存占用

performance_schema = off

mysql5.7 首次更新root密码

安装完mysql5.7之后,默认root是没有密码的,为了安全性,这时候需要设置root密码。

use mysql;
update user set authentication_string=PASSWORD("123456")where user='root';
update user set plugin="mysql_native_password";
FLUSH PRIVILEGES;
quit

 

更新 root 外网的访问账户权限

mysql -uroot -p123456 -P 13306 -S /tmp/mysql13306.sock;

use mysql;

ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';&nbsp;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

启动 和禁用外键约束的方法

我们可以使用

    SET FOREIGN_KEY_CHECKS=0;
来禁用外键约束.
     然后这块执行我们的插入语句....
之后再用
    SET FOREIGN_KEY_CHECKS=1;
来启动外键约束.

https://www.cnblogs.com/edgedance/p/6979714.html

posted @ 2018-11-27 16:05  lvye1221  阅读(23)  评论(0编辑  收藏  举报