设置MySQL允许外网访问!更改MYSQL数据库不区分大小写表名!


更改MYSQL数据库不区分大小写表名!


今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?

  后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区分表名大小写的,哎,弄了那么旧,害死我了。

  让MYSQL不区分表名大小写的方法其实很简单:

  1.用ROOT登录,修改/etc/my.cnf

  2.在[mysqld]下加入一行:lower_case_table_names=1

  3.重新启动数据库即可。


1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
2、用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
lower_case_table_names参数详解:
lower_case_table_names=0
其中0:区分大小写,1:不区分大小写


MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。

-----------------------------------------------------------------------------------------------------------------------------------

设置MySQL允许外网访问

1.修改配置文件
sudo vim /etc/mysql/my.cnf
把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.


2.登录数据库
mysql -u root -p

输入密码
mysql> use mysql;


3.查询host
mysql> select user,host from user;


4.创建host
如果没有"%"这个host值,就执行下面这两句:
mysql> update user set host='%' where user='root';
mysql> flush privileges;


5.授权用户
任意主机以用户root和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql> flush privileges;

IP为192.168.1.102的主机以用户myuser和密码mypwd连接到mysql服务器
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION; 
mysql> flush privileges;

PS:以上为授权方法,以下为改表方法:

mysql> use mysql;

mysql> update user set host='%' where user='root';
mysql> flush privileges;


暂无评论
发表新评论