linux上mysql安装后的必要配置

    • 安装了mysqlServermysql client后,并且可以登录到mysqlServer。
    • 这里记录下安装后的一些问题:         

MySQL后找不到my.cnf文件

         Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的。我们执行mysql --help命令后,可以看到如

        下息:

                 
                   
 
        
可以看到mysqlServer启动的时候顺序读取的配置文件,但我们通过rpm包安装的Mysql是不会产生my.cnf

        文件。

        原因网上很多说法:这里只贴出个人比较赞同的说法,my.cnf文件只是配置参数,mysql启动的时候会

  在按照上述的顺序读取配置文件,如果没有找到,mysql会使用内置的参数来启动。这里我们可以自己

  创建一个my.cnf文件,首先我们切换到/usr/share/mysql/目录下,我们看到如下相关文件:

                  
                 
 
  

  可以看到有很多的配置文件,随便查看一个

                        
                  
 

       
       简单的意思是mysql根据运行级别的不同,有不同的配置文件,有轻量级,中等的,高的等。这里

我们拷贝一个my-medium.cnf /etc目录下,并重命名为my.cnf这样就有了my.cnf文件了。

 开启远程连接

       虽然安装了mysqlServer,但只有本机器可以连接上mysql(mysql为了安全考虑,默认安装后禁止别的

   主机访问)

   这里有两种方式来解决:

    1.修改mysql系统表(mysql),登录mysql后,我们执行show databases;可以看到有如下表

         
       
 
     
然后执行use mysql,再执行show tables;我们可以看到有一user表。

     我们执行sqlselect host,user,password from user; 

     
       
 
     
这里user等于roothost值默认是localhost(%是我安装时改的,表示任何主机都可访问)实际

     你只要执行update user set host = % where user =root这样即可。建议在开发时       置成%,修改后需重启。 

   2.修改my.cnf

     在[mysqld] 所属域中,添加bind-address属性,指定为本机实际ip地址,如下         

                          
                        
 

             保存退出,重启。

        这样就开启了远程连接。

 MYSQL字符集设置

           现在可以远程连接了,但我们操作中文时,会出现乱码情况,我们先执行如下命令:

   show variables like '%char%';(查看全局字符变量)

                        
                            
 
          
1.这里介绍mysql的变量:mysql服务维护着两种变量:全局变量,会话变量。全局变量影响服务器

 全局操作。会话变量影响具体客户端连接相关操作。

 全局变量:服务器启动时,全局变量初始化为默认值。可以在选项文件(配置文件)或命令行中

        定的选项来更改默认值。服务器启动后,通过连接服务器并执行set global(全局的)

                          var_name语句动态更改全局变量。该用户必须具有SUPER权限。

                    如:set global character_set_client = gbk;

   会话变量:服务器为每个客户端连接维护会话变量。连接时使用相应全局变量初始化客户端会话

                   变量。客户可以通过set session var_name语句动态更改会话变量。设置会话变量不

                   需要特殊权限,但客户只更改自己的会话变量,不更改其它客户的会话变量。

                   如:set session character_set_client = gbk;

 2.关于mysql中字符集的转换过程:

                   character_set_client客户端来源数据使用的字符集

                   character_set_connection连接层字符集

                   character_set_database当前选中数据库的默认字符集

                   character_set_server默认的内部操作字符集

                   character_set_results查询结果字符集

                   character_set_system系统元数据(字段名等)字符集
           客户端以character_set_client定义的字符集来编码用户输入的MySQL命令或sql语句。客户端连接

 mysqlServer后,建立了一条数据通信链路,MySQL命令或sql语句沿着数据链路传向MySQL服务器,  

    character_set_client”定义的字符集转换为character_set_connection定义字符集。MySQL服务

 例收到数据通信链路中的MySQL命令或sql语句,将MySQL语句或sql语句从character_set_connection

 字符集转换为character_set_server定义的字符集MySQL命令或sql语句针对于某个数据库进行操 

   ,此时将MySQL命令或sql命令从character_set_server定义的字符集转换为character_set_data

 base定义的字符集MySQL命令或sql语句执行结束后,将执行结果设置为character_set_results

 字符集执行结果沿着打开的数据通信链路原路返回,将执行结果又character_set_results定义的字符 

   集转character_set_client定义的字符集。

 

   3.解决方案:执行操作前设置会话变量和修改配置文件(my.cnf,此为修改全局变量)

                      
                      
 

                       
                      
 

                重启服务即可。

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

  1.LINUX下的MYSQL默认是区分表名大小写的,这会导致项目操作数据库时老是报表不存在的错误

 息,执行show variables like '%lower_case_table_nam%'命令后
        
        
 
 
   0:区分大小写,1:不区分大小写

2.MySQLLinux下数据库名、表名、列名、别名大小写规则如下:

  数据库名与表名是严格区分大小写的;

     表的别名是严格区分大小写的;

     列名与列的别名在所有的情况下均是忽略大小写的;

   变量名也是严格区分大小写的

    MySQLWindows下都不区分大小写。

 

  3.解决方法:依据上述字符集的方案(修改会话变量或配置文件)

    修改配置文件:在[mysqld]下加入一行:lower_case_table_names=1

    重启即可。 

上述的几个问题是我在安装mysql后,使用过程中遇到的问题,经网上查阅资料得以解决,这里总结记录

下问题及解决方案。   

 


 

 

 

  

 

  

 

  

 

猜你喜欢

转载自javazqd110.iteye.com/blog/2342609