SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13)
通过php的mysql_connect('localhost','usr','pass')连接本地数据库成功,但是,mysql_connect('127.0.0.1:3306','usr','pass')出现Can't connect to MySQL server on '127.0.0.1' (13)的错误。
解决方法:
getsebool -a | grep httpd
[root@centos ~]# getsebool -a | grep httpd allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off httpd_can_network_memcache --> off httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_dbus_sssd --> off httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> off httpd_execmem --> off httpd_manage_ipa --> off httpd_read_user_content --> off httpd_run_preupgrade --> off httpd_run_stickshift --> off httpd_serve_cobbler_files --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_fusefs --> off httpd_use_gpg --> off httpd_use_nfs --> off httpd_use_openstack --> off httpd_verify_dns --> off
解决方法:
setsebool httpd_can_network_connect 1
参考链接:https://www.cnblogs.com/Darlin356230410/p/4506207.html
MySQL 从库日志比主库多
MYSQL主库宕机,从库设置为主库,主库重启之后,从库日志比主库日志多。
详情连接 https://www.linuxidc.com/Linux/2016-01/128002.htm
mysql远程连接报ERROR 2003
今天远程连接mysql的时候,提示了一个错误:**ERROR 2003 (HY000): Can't connect to MySQL server on**
服务器里查看mysql是否启动:
ps aux|grep mysql显示已开启。
查看配置my.cnf配置文件:
[mysqld] bind-address = 0.0.0.0 # 表示允许任何主机登陆MySQL port=3306 # 表示MySQL运行端口为3306
服务器中登录mysql,查看mysql运行的实际端口
show global variables like 'port'; # 查看MySQL运行的实际端口 +---------------+---------------+ | Variable_name | Value | +---------------+---------------+ | port | 3306 | +---------------+---------------+ 1 row in set (0.01 sec)
继续查看mysql的host
select host,user from user;
没有对应的host
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
mysql开启慢查询
my.cnf里开启慢查询日志
#log bin log_bin = /opt/lampp/var/mysql/binlog #sloq query log slow_query_log = ON slow_query_log_file ="/opt/lampp/logs/mysql-slow.log" long_query_time = 3 log_queries_not_using_indexes = ON ## 查看查询时间并设置 show variables like 'long_query_time'; set global long_query_time=3; ##设置慢查询日志文件 set global slow_query_log_file = '/opt/lampp/logs/mysql-slow.log'; ##开启未使用索引sql set global log_queries_not_using_indexes=on; ##开启慢查询日志 set global slow_query_log=on;
标签: mysql开启慢查询
为什么用 B+ 树做索引而不用哈希表做索引
1、哈希表是把索引字段映射成对应的哈希码然后再存放在对应的位置,这样的话,如果我们要进行模糊查找的话,显然哈希表这种结构是不支持的,只能遍历这个表。而B+树则可以通过最左前缀原则快速找到对应的数据。2、如果我们要进行范围查找,例如查找ID为100 ~ 400的人,哈希表同样不支持,只能遍历全表。
3、索引字段通过哈希映射成哈希码,如果很多字段都刚好映射到相同值的哈希码的话,那么形成的索引结构将会是一条很长的链表,这样的话,查找的时间就会大大增加。
这篇文章写的不错,可以作为参考https://www.toutiao.com/i6668146342700777991
https://mp.weixin.qq.com/s/j-meke0QMqTgPInj118UZA
标签: mysql索引
MYSQL自增的问题
一张表里ID是自增主键,当insert17条记录后,删除了第15、16、17条记录,在重启mysql,再插入一条记录,这条记录的ID是多少?
如果表的类型是MyISAM,新插入记录的id是18 原因:MyISAM表会把自增主键的最大ID记录到数据文件里,重启mysql后,自增主键的最大ID不会丢失。 如果是InnoDB,新插入记录的id是15 原因:InnoDB表指示把自增主键的最大ID记录到内存中,重启mysql后,会导致最大ID丢失。以InnoDB类型的表做测试。
初始数据
删除第4、5条数据后,重启mysql,在插入新数据
无论是MyISAM还是InnoDB,删除数据后,不重启mysql的情况下,新插入的记录最大ID是相同的。