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 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 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 ) 修改用户密码(测试不可用) 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 = your_password port = 13306 socket = /tmp/mysql13306.sock [mysqld] port = 13306 socket = /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 = 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'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; FLUSH PRIVILEGES;
启动 和禁用外键约束的方法
我们可以使用
SET FOREIGN_KEY_CHECKS=0;
来禁用外键约束.
然后这块执行我们的插入语句....
之后再用
SET FOREIGN_KEY_CHECKS=1;
来启动外键约束.