zoukankan      html  css  js  c++  java
  • 一步到位Linux中安装配置MySQL及补坑

      Windows上安装MySQL也就不讲了,基本上一路点击下一步就可完成,现在讲讲Linux上布署Mysql,虽然也有很多网友列出了详细的步骤,可能是因为版本过老的问题导致即使按照上面一步步来也还是出现不少问题,所以在此列出以作防坑指南。

       至于Mysql是什么,能做什么那就不用介绍了,主要讲安装。

    环境  

          CentOS7.0

      Mysql-5.7.17

      用root用户安装

      关闭防火墙或让涉及到的端口通过。

    -A INPUT -m state --state NEW -m tcp -p tcp --sport 3306 -j ACCEPT
    -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
     
    然后执行下面命令,使防火墙立即生效。
    service iptables restart

    下载

      去官网下载 :http://dev.mysql.com/downloads/mysql/

      下载后放进CentOS中的/usr/local/ 文件夹中,并解压到当前文件中 /usr/local/mysql,Mysql有很多版本,没选对可能也会出现各种问题。

    准备系统帐户

    groupadd mysql #添加用户组
    
    useradd -r -g mysql -s /bin/false mysql #添加mysql用户

    安装

      进入/usr/local文件夹解压mysql到当前文件夹:

    cd /usr/local
    
    tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 

      重命名为mysql

    mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql

    配置相关的启动配置文件

    1、复制my.cnf 到 /etc/my.cnf (mysqld启动时自动读取)

    cp my-default.cnf /etc/my.cnf

      如果"/etc/"目录下没有my.cnf配置文件,请到"/usr/share/mysql/"下找到*.cnf文件,拷贝其中一个合适的配置文件到"/etc/"并改名为"my.cnf"中。命令如下:

    cp /usr/share/mysql/my-medium.cnf  /etc/my.cnf

    2、解决一下乱码问题
      vi /etc/my.cnf
      [mysql]
      default-character-set=utf8
      [mysqld]
      default-storage-engine=INNODB
      character_set_server=utf8

    [client]
    #password    = your_password
    port        = 3306
    socket        = /usr/local/mysql/data/mysql.sock
    default-character-set=utf8
    
    # Here follows entries for some specific programs
    
    # The MySQL server
    [mysqld]
    port        = 3306
    socket        = /usr/local/mysql/data/mysql.sock
    datadir=/usr/local/mysql/data
    skip-locking
    key_buffer_size = 16M
    max_allowed_packet = 1M
    table_open_cache = 64
    sort_buffer_size = 512K
    net_buffer_length = 8K
    read_buffer_size = 256K
    read_rnd_buffer_size = 512K
    myisam_sort_buffer_size = 8M
    default-storage-engine=INNODB
    character_set_server=utf8
    lower_case_table_names=1

    3、复制mysql.server 到/etc/init.d/ 目录下【目的想实现mysqld -install这样开机自动执行效果】
      【/etc/init.d/ 目录,等效于注册表HKEY_LOCAL_MACHINESYSTEMControlSet001services 记录有哪些服务】

    cp mysql.server /etc/init.d/mysql (mysql是服务名)

    4、修改 /etc/init.d/mysql 参数
      vi /etc/init.d/mysql
      给与2个目录位置

    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    port = 3306

    4、给目录/usr/local/mysql 更改拥有者

    chown -R mysql:mysql /usr/local/mysql

       在/etc/profile里面在文件末尾添添加一个路径 

     初始化 mysql 的数据库

      mysql_install_db (老版本的做法)
      新版本:

    scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

      生成出一个data目录,代表数据库已经初始化成功

    启动mysql

    /usr/local/mysql/bin/mysqld_safe --user=mysql
    检查ps -ef|grep mysql

      再给超级管理员上密码:root

    bin/mysqladmin -u root password 'root' 

    授权远程访问

    mysql>grant all privileges on *.* to root@'%' identified by 'root';
    mysql>flush privileges;

    进入客户端

      登录 
      mysql -u root -p

      输入密码

    扩展

      mysql 下有好几个结尾为cnf的文件,它们的作用分别是。

    a、my-small.cnf:是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。

    b、my-medium.cnf:是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
    c、my-large.cnf:是为专用于一个SQL数据库的计算机而设计的。由于它可以为该数据库使用多达512MB的内存,所以在这种类型的系统上将需要至少1GB的RAM,以便它能够同时处理操作系统与数据库应用程序。
    d、my-huge.cnf:是为企业中的数据库而设计的。这样的数据库要求专用服务器和1GB或1GB以上的RAM。
    这些选择高度依赖于内存的数量、计算机的运算速度、数据库的细节大小、访问数据库的用户数量以及在数据库中装入并访问数据的用户数量。随着数据库和用户的不断增加,数据库的性能可能会发生变化。

    备注:这里我们根据实际情况,选择了"my-medium.cnf"进行配置。

    删除空用户,增强安全
      目前为止我们都是以"root"的身份进行的,但是当我们切换至普通用户登录MySQL时,直接输入"mysql"就进去了,我们刚才不是设置密码了吗?怎么就失效了呢?说明有空用户存在。先用命令"exit"退出,在按照下面命令进行修正。

    解决步骤如下:

    以MySQL用户"root"用密码形式登录。

    mysql -u root -p

    删除空用户,强烈建议。

    mysql>delete from mysql.user where user='';

    刷新权限表,以便可以使更改立即生效。

    mysql>flush privileges;

    输入"exit",退出MySQL。

    mysql>exit

    再重新以"mysql"登录测试

    mysql
    发现以"mysql"登录已经失效,必须以"mysql –u root -p"才能登录。

  • 相关阅读:
    Cousera课程Learning How to Learn学习报告
    C语言中当无符号数遇到符号数
    STC15 串口(工作方式1)使用小结
    取C语言头文件的文件名
    linux 的 shell 逻辑
    Win7 局域网内简单共享的设置
    写了一个批处理,可以实现文件备份,自动对比删除冗余文件。
    C语言 函数指针的应用
    自动控制原理 典型环节频率特性对比
    51单片机汇编的溢出标志位OV和进位标志位CY
  • 原文地址:https://www.cnblogs.com/zhangs1986/p/6603334.html
Copyright © 2011-2022 走看看