晚上在做联系xtrabackup时,实验环境是一台centos7和一台ubuntu 16.04的虚拟机,centos7上面安装的mysql在创建完远程连接账号以后可以正常登陆,但是ubuntu却无法登录,提示“ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.99.88’ (61)”。其实问题很简单,这里主要记录一下当时我解决问题的思路,当然当时思路不是很正确,以前也没有遇到过类似的问题。
第一时间我想到的是自己是不是把账号弄错了,ubuntu上面的mysql没有对应的账号(带上本机3台mysql难免会弄错),就用一个root账号在ubuntu上本地登录,然后查看当前的系统有哪些用户,发现自己登录用的远程账号和权限没有问题。
mysql -uroot -p
use mysql;
select * from user\G;
然后就是防火墙,是不是防火墙没有开启。那么就查看ubuntu的防火墙。
sudo iptables -L #查看防火墙规则列表
sudo iptables -F #清空防火墙列表
做完这些还是无法登录,google了一下,发现是ubuntu系统下mysql的bind问题。ubuntu中mysql默认绑定的是127.0.0.1,这样就只允许本机登录,想要允许其他地方登录只需要把bind改成公网ip或者任何ip均可。
编辑mysql的配置文件”/etc/mysql/mysql.conf.d/mysqld.cnf”
#bind-address = 127.0.0.1
bind-address = 0.0.0.0
然后重启mysql,问题就解决了!
最近在学习nginx相关的内容,看书上介绍nginx的源码,里面很多地方都用到了函数指针。对于我这种c语言菜鸟来说,看的是云里雾里的,搞不清楚要干嘛,就搜索了一些函数指针的内容,自己动手实验了一番。
在C系列语言中,任何一个变量,总是要先声明,之后才能使用的,这和php差别还是很大的。函数指针的声明可以按照如下”返回类型 (*变量名)(函数参数…)“进行,下面我来举几个例子。
void (*my_func1)(void); //声明一个返回类型为空,参数为空,名字为my_func1的函数指针
int (*my_func2)(int x,int y); //声明一个返回类型为整形,参数为整形x和整形y,名字为my_func2的函数指针
int (*my_func3)(int,int); //声明一个返回类型为整形,参数为2个整形,名字为my_func3的函数指针,其实和上面的my_func2一样
void (*my_func4)(char *str); //声明一个返回类型为空,参数为字符指针,名字为my_func4的函数指针
typedef void (*void_func_t)(void); //typedef关键字是类型定义,这里就是定义了一个返回值为空,参数为空的函数指针类型,类型名称为void_func_t
相信经过上面的例子,对c语言的函数指针大家都有一个初步的概念,看了下面的代码相信大家基本都能初步掌握函数指针了.
文件名:main.c
#include <stdio.h>
//定义返回值为int,传入参数为2个int的函数指针
int (*point_func)(int,int);
int (*p_func)(int a,int b);
//定义返回值为int,传入参数为2个int的函数指针类型
typedef int (*sum_func)(int,int);
/**
* 定义一个相加函数
*/
int sum(int x,int y){
int r = x+y;
printf("%d+%d=%d\n",x,y,r);
return r;
}
//执行传入进去的函数
void exec_func(sum_func do_func){
do_func(10,21);
}
int main() {
int result;
sum_func my_func;
my_func = sum;
result = sum(1,2);
point_func = ∑
p_func=point_func;
//通过指针的方式调用函数
(*point_func)(3,4);
(*p_func)(5,6);
p_func(7,8);
exec_func(my_func);
exec_func(point_func);
return 0;
}
上面代码中我们既可以通过”(*p_func)(5,6)”也可以直接通过”p_func(7,8)”直接调用,前者是比较正规的写法,但是阅读起来是不是没有后者那么舒服顺畅。
编译上面代码”gcc main.c -o main”,执行代码就可以看到下面的输出结果:
1+2=3
3+4=7
5+6=11
7+8=15
10+21=31
10+21=31
近期评论