zoukankan      html  css  js  c++  java
  • Linux 源码安装mysql及配置

    建议:如果你是新手,请先全文通读一遍后在安装。不用太过详细的看命令,直接看中文,知道出现问题下面有解决方法就行了。

    注意:以 vi 开头的命令强烈建议自己敲,因为复制下来的可能会有问题。

    系统:centos5.5  mysql5.5和5.0都可以使用

    不同版本的系统可能操作不太一样,请注意。我尽量保证发布出来的代码都经过测试。但难免有部分遗漏,如发现问题,请在下方留言。我会抽时间修改的。

    Cmake下载地址:http://www.cmake.org/cmake/resources/software.html

    Mysql下载地址: http://www.mysql.com

    1.假设已经有mysql-5.5.25.tar.gz以及cmake-2.8.4.tar.gz两个源文件

    (1)先安装cmakemysql5.5以后是通过cmake来编译的,5.5以前的版本不需要安装)

    [root@ L160 local]# tar -xf cmake-2.8.4.tar.gz
    [root@ L160 local]# cd cmake-2.8.4
    [root@ L160 cmake-2.8.4]# ./configure
    [root@ L160 cmake-2.8.4]# make
    [root@ L160 cmake-2.8.4]# make install

    (2)创建mysql的安装目录及数据库存放目录

    [root@ L160~]# mkdir -p /usr/local/mysql                 //安装mysql 
    [root@ L160~]# mkdir -p /usr/local/mysql/data            //存放数据库

    (3)创建mysql用户及用户组

    [root@ L160~]# groupadd mysql
    [root@ L160~]# useradd -r -g mysql mysql

    (4)安装mysql

    [root@ L160 local]# tar -xf mysql-5.5.25.tar.gz
    [root@ L160 local]# cd mysql-5.5.25
    //5.5的命令 [root@ L160 mysql-5.5.10]# cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data\ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci\ -DEXTRA_CHARSETS=all -DENABLED_LOCAL_INFILE=1 注意:上面的是一条命令
    //5.0的命令:
    ./configure  --prefix=/opt/cuix/ mysql-5.0.51 --with-charset=utf8 
     --with-collation=utf8_general_ci 
               
    [root@ L160 mysql-5.5.10]#make

    如果你机器性能不是很好,有可能出现一堆的警告。百度了一下,说是gcc升级引起的。同样的系统(自带gcc),我在服务器上就没有警告,我用虚拟机装就会警告。搞不懂是怎么回事了。。
    [root@L160 bin]# echo $?    //查询上一个程序执行成功没有
    0    //0代表成功,其他代表失败,好了什么警告之类的直接扔到爪哇国去
    下面的是警告信息:

    提领类型双关的指针将破坏强重叠规则

    warning: dereferencing type-punned pointer will break strict-aliasing rules

    [root@ L160 mysql-5.5.10]# make install   //安装

    参数说明:

    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql        //安装目录

    -DINSTALL_DATADIR=/usr/local/mysql/data         //数据库存放目录

    -DDEFAULT_CHARSET=utf8                        //使用utf8字符

    -DDEFAULT_COLLATION=utf8_general_ci            //校验字符

    -DEXTRA_CHARSETS=all                            //安装所有扩展字符集

    -DENABLED_LOCAL_INFILE=1                        //允许从本地导入数据

    详细的参数说明请参考:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html

    注意事项:

    重新编译时,需要清除旧的对象文件和缓存信息。

    # make clean

    # rm -f CMakeCache.txt

    # rm -rf /etc/my.cnf

    2.配置

    (1)设置目录权限

    [root@ L160~]# cd /usr/local/mysql
    
    [root@ L160 mysql]# chown -R root:mysql . //把当前目录中所有文件的所有者所有者设为root,所属组为mysql。注意mysql后有个空格和点
    [root@ L160 mysql]# chown -R mysql:mysql data

    (2)mysql的启动服务添加到系统服务中

    [root@ L160 mysql]# cp support-files/my-medium.cnf /etc/my.cnf //my-medium.cnf不仅限于这一个文件
    //查看可以使用的文件
    [root@L160 mysql]# cd support-files/
    [root@L160 support-files]# ll
    #下面列出的×.cnf结尾的都可以,但是每一个都有不同的用处,具体的请自己Google
    total 152 -rwxr-xr-x 1 root mysql 1153 May 29 11:14 binary-configure -rwxr-xr-x 1 root mysql 4528 May 29 11:14 config.huge.ini -rwxr-xr-x 1 root mysql 2382 May 29 11:14 config.medium.ini -rwxr-xr-x 1 root mysql 1626 May 29 11:14 config.small.ini -rw-r--r-- 1 root mysql 773 Jul 2 2012 magic -rw-r--r-- 1 root mysql 4691 May 29 11:14 my-huge.cnf -rw-r--r-- 1 root mysql 19759 May 29 11:14 my-innodb-heavy-4G.cnf -rw-r--r-- 1 root mysql 4665 May 29 11:14 my-large.cnf -rw-r--r-- 1 root mysql 4676 May 29 11:14 my-medium.cnf -rw-r--r-- 1 root mysql 2840 May 29 11:14 my-small.cnf -rwxr-xr-x 1 root mysql 1061 May 29 11:14 mysqld_multi.server -rwxr-xr-x 1 root mysql 839 May 29 11:14 mysql-log-rotate -rwxr-xr-x 1 root mysql 10650 May 29 11:14 mysql.server -rwxr-xr-x 1 root mysql 1326 May 29 11:14 ndb-config-2-node.ini

    (3)创建系统数据库的表

    [root@ L160 mysql]# cd /usr/local/mysql
    [root@ L160 mysql]# scripts/mysql_install_db --user=mysql

    (4)设置环境变量

    (方法1:已测试

    [root@ L160~]# vi /etc/profile
    
    添加红色部分内容
    # Path manipulation
    if [ "$EUID" = "0" ]; then
            pathmunge /sbin
            pathmunge /usr/sbin
            pathmunge /usr/local/sbin
            pathmunge /usr/local/mysql/bin/
    fi
    [root@ L160
    ~]# source /etc/profile

    (方法2:未测试

    [root@ L160~]# vi /root/.bash_profile
    
    在PATH=$PATH:$HOME/bin添加参数为:
    
    PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
    
    [root@ L160~]# source /root/.bash_profile

    (5)mysql添加到系统服务中

    [root@ L160 mysql]# cd /usr/local/mysql
    [root@ L160 mysql]# cp support-files/mysql.server /etc/init.d/mysql //将mysql的启动服务添加到系统服务中 
    
     注意:主要是将mysql.server拷贝到/etc/init.d中,并命名为mysql(有的教程是命名为  mysqld   这个命名关系到下一步的启动和加入开机启动的命令)。
     在有的系统中,mysql.server在/usr/local/mysql/share/mysql/mysql.server中。
    而本系统中,mysql.server在/usr/
    local/mysql/support-files/mysql.server中。

    (6)启动mysql的方法(mysql已经被添加到系统服务中)

    [root@ L160~]# service mysql start  //启动mysql服务
    ***********************************************
    [root@ L160~]# service mysql stop  //停止mysql服务 [root@ L160~]# service mysql restart //重启mysql服务 如果上述命令出现:

      mysql: unrecognized service    //mysql 未识别的服务

    则可能mysql还没添加到系统服务中,请参考上一步

    (7)修改MySQLroot用户的密码以及打开远程连接

    [root@L160 mysql]#  mysql -u root -p
    Enter password:
    //这里MySQL的root用户还没有配置密码,所以为空值。需要输入密码时,直接点回车键即可。
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    ..........................中间省略..........................
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> use mysql; //使用mysql这个库
    Database changed
    mysql> desc user; 
    +------------------------+-----------------------------------+------+-----+---------+-------+
    | Field                  | Type                              | Null | Key | Default | Extra |
    +------------------------+-----------------------------------+------+-----+---------+-------+
    | Host                   | char(60)                          | NO   | PRI |         |       |
     .................................中间省略...........................................................
    | authentication_string  | text                              | YES  |     | NULL    |       |
    +------------------------+-----------------------------------+------+-----+---------+-------+
    42 rows in set (0.01 sec)
    
    mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";  //添加远程连接
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> update user set Password = password('123456') where User='root'; //为root用户设置密码:123456
    mysql> update user set authentication_string=password('123456') where User='root'; // mysql 5.7.*适用 Query OK, 5 rows affected (0.00 sec) Rows matched: 5 Changed: 5 Warnings: 0 mysql> select Host,User,Password from user where User='root';
    mysql> select Host,User,authentication_string from user where User='root'; //mysql 5.7.* 适用
    +-----------+------+-------------------------------------------+ | Host | User | Password | +-----------+------+-------------------------------------------+ | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | L160 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | ::1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+------+-------------------------------------------+ 5 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
    重新登录: [root@ L160 mysql]
    # mysql -u root -p

    若还不能进行远程连接,则查看防火墙是否开启

    [root@ L160~]# /etc/init.d/iptables status   //会得到一系列信息,说明防火墙开着。

    关闭防火墙(重启失效)

    [root@ L160~]# /etc/rc.d/init.d/iptables stop

    禁用防火墙(永久关闭)

    [root@ L160~]# chkconfig iptables off

    当然你也可以添加防火墙规则,这个你就自己搞吧。有时间我会更新上来的

    (8)设置开机启动

    [root@ L160~]# chkconfig --level 345 mysql on  //设置开机启动(如果你要取消开机启动:把 on 改为 off 就行了)

    (9)修改mysql的最大连接数

    mysql默认安装的最大连接数是100100一般是不够用的。要增大连接数,要怎样增加呢?

    [root@ L160~]# vi /etc/my.cnf  
    
    # The MySQL server
    [mysqld]
    port = 3306
    socket = /tmp/mysql.sock
    skip-external-locking
    key_buffer_size = 16M
    max_allowed_packet = 4M
    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
    #一定要加在[mysqld]这段里面,根据你的需求自行更改数据
    max_connections=1000            # 最大连接数
    max_user_connections=500     # 每个用户最大连接数
    wait_timeout=200                    # 多少秒后关闭空闲(IDLE)

    检测:

    [root@ L160~]# service mysql restart  //重启mysql服务
    [root@ L160~]# cd /usr/local/mysql/bin
    [root@ L160~]# mysqladmin -u root -p variables    //检测

    输入root数据库账号的密码后可看到 (屏幕上的数据有点多,慢慢找)

    |max_connections                | 1000
    |max_user_connections        | 500
    |wait_timeout                    | 200
    #改动已经生效。

    (10)查看修改mysql编码方式

    MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8(java的一般都是用utf-8,乱码问题蛋疼啊,我就用utf-8演示)。

    1、需要以root用户身份登陆才可以查看数据库编码方式
    [root@L160 bin]# mysql -u root -p
    Enter password:

    查看数据库的编码的命令:

    mysql> show variables like 'character%';
    +--------------------------+----------------------------------+
    | Variable_name            | Value                            |
    +--------------------------+----------------------------------+
    | character_set_client     | utf8                             |
    | character_set_connection | utf8                             |
    | character_set_database   | latin1                           |
    | character_set_filesystem | binary                           |
    | character_set_results    | utf8                             |
    | character_set_server     | latin1                           |
    | character_set_system     | utf8                             |
    | character_sets_dir       | /usr/local/mysql/share/charsets/ |
    +--------------------------+----------------------------------+
    8 rows in set (0.00 sec)

    为了测试这个,我先重装个mysql

    2、停止mysql服务

    [root@L160 etc]# service mysql stop
    Shutting down MySQL.                                       [  OK  ]

    3、编辑my.cnf

    [root@L160 etc]# vi /etc/my.cnf
    //添加红色部分的内容
    # The following options will be passed to all MySQL clients
    [client]
    #password       = your_password
    port            = 3306
    socket          = /tmp/mysql.sock
    default-character-set=utf8
    
    # Here follows entries for some specific programs
    
    # The MySQL server
    [mysqld]
    port            = 3306
    .............省略................
    max_connections=1000            # 最大连接数
    max_user_connections=500     # 每个用户最大连接数
    wait_timeout=200                    # 多少秒后关闭空闲(IDLE)
    character-set-server =utf8

    4、检查

    [root@L160 etc]# service mysql start
    Starting MySQL..                                           [  OK  ]
    [root@L160 etc]# mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g. ..................省略.........................................
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show variables like 'character%';
    +--------------------------+----------------------------------+
    | Variable_name            | Value                            |
    +--------------------------+----------------------------------+
    | character_set_client     | utf8                             |
    | character_set_connection | utf8                             |
    | character_set_database   | utf8                             |
    | character_set_filesystem | binary                           |
    | character_set_results    | utf8                             |
    | character_set_server     | utf8                             |
    | character_set_system     | utf8                             |
    | character_sets_dir       | /usr/local/mysql/share/charsets/ |
    +--------------------------+----------------------------------+
    8 rows in set (0.00 sec)
    //#改动已经生效。

    未完,待续。。。。

    参考文档:

    http://www.cnblogs.com/fly1988happy/archive/2011/11/21/2257682.html

    http://hi.baidu.com/edeed/item/eb40f529f35b2484af48f5b6

  • 相关阅读:
    四大组件的工作过程
    理解Window和WindowManager
    Android中的动画
    View的工作原理
    62、滑动窗口的最大值
    61、数据流中的中位数
    60、二叉搜索树的第k个结点
    59、序列化二叉树
    58、把二叉树打印成多行
    57、按之字形顺序打印二叉树
  • 原文地址:https://www.cnblogs.com/zz0412/p/mysql.html
Copyright © 2011-2022 走看看