mysql 常用基础
mysql5.7 修改密码
#关闭mysql service mysql stop #运行 mysqld_safe --skip-grant-tables --skip-networking & #连接mysql mysql #更改密码 mysql> update mysql.user set authentication_string=password('root') where user='root' and Host = 'localhost'; mysql> flush privileges; mysql> quit #重启mysql service mysql restart #连接mysql mysql -uroot -proot #执行命令 mysql> alter user 'root'@'localhost' identified by 'root'; 或者 mysql> set password for 'root'@'localhost'=password('root');
查看mysql正在使用的配置文件
[root@master ~]# ps -ef |grep mysql| grep "my.cnf" 如果上面的命令没有输出,表示没有设置使用指定目录的my.cnf。
[root@master ~]# mysql --help|grep 'my.cnf' order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf #输出的内容为默认使用my.cnf的文件 如果没有设置使用指定目录my.cnf文件及默认读取目录没有my.cnf文件,表示mysql启动时并没有加载配置文件,而是使用默认配置。 需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启mysql后即可生效。
mysql 主从问题
1、防火墙问题(centos7)
连接master时报: [root@master-bak ~]# mysql -uroot -proot -h 192.168.132.131 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.132.131' (113) #关闭防火墙即可 [root@master-bak ~]# service firewalld stop Redirecting to /bin/systemctl stop firewalld.service
[root@master-bak ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
2、查看slave状态时, Slave_IO_Running: NO:
注释/etc/my.cnf下的
gtid_mode = on
重启mysql
然后进入mysql
mysql> stop slave; Query OK, 0 rows affected (0.00 sec) mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; Query OK, 0 rows affected (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec)
大量插入数据的优化
#对于 MyISAM 类型的表,可以通过以下方式快速的导入大量的数据。 ALTER TABLE tblname DISABLE KEYS; LOAD DATA LOCAL INFILE '/usr/share/dict/words' INTO TABLE source_words(word); ALTER TABLE tblname ENABLE KEYS; 这两个命令用来打开或者关闭 Myisam 表非唯一索引的更新。在导入大量的数据到一个非空的 MyISAM 表时,通过设置这两个命令,可以提高导入的效率。对于导入大量数据到一个空的 MyISAM 表,默认就是先导入数据然后才创建索引的,所以不用进行设置。 #InnoDB类型的表,因为 InnoDB类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果 InnoDB表没有主键,那么系统会默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这个优势提高导入数据的效率。 #在导入数据前执行 #关闭唯一性校验,在导入结束后执行 SET UNIQUE_CHECKS=0; #恢复唯一性校验,可以提高导入的效率。 SET UNIQUE_CHECKS=1; #如果应用使用自动提交的方式,建议在导入前执行 #关闭自动提交,导入结束后再执行 SET AUTOCOMMIT=0; #打开自动提交,也可以提高导入的效率。 SET AUTOCOMMIT=1;
持续更新中。。。