编译安装MySQL-5.5 cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。 编译安装MySQL-5.5 一、安装开发环境 [[email protected] ~]# yum install "Compatibility libraries" "Development tools" "gcc-c++" 二、编译安装cmake [[email protected] ~]# https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz [[email protected] ~]# tar xf cmake-3.4.1.tar.gz [[email protected] ~]# cd cmake-3.4.1 [[email protected] cmake-3.4.1]# ./bootstrap [[email protected] cmake-3.4.1]# make [[email protected] cmake-3.4.1]# make install 三、准备MySQL数据目录分区 [[email protected] ~]# fdisk /dev/sda WARNING: DOS-compatible mode is deprecated. It‘s strongly recommended to switch off the mode (command ‘c‘) and change display units to sectors (command ‘u‘). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +10G Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/sda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x7dd89809 Device Boot Start End Blocks Id System /dev/sda1 1 1306 10490413+ 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [[email protected] ~]# cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 10490413 sda1 8 16 20971520 sdb 8 17 512000 sdb1 8 18 20458496 sdb2 253 0 18423808 dm-0 253 1 2031616 dm-1 [[email protected] ~]# pvcreate /dev/sda1 Physical volume "/dev/sda1" successfully created [[email protected] ~]# vgcreate myvg /dev/sda1 Volume group "myvg" successfully created [[email protected] ~]# lvcreate -L 5G -n mylv myvg Logical volume "mylv" created [[email protected] ~]# mke2fs -j /dev/mapper/myvg-mylv mke2fs 1.41.12 (17-May-2010) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 327680 inodes, 1310720 blocks 65536 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=1342177280 40 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [[email protected] ~]# mkdir /mydata [[email protected] ~]# vim /etc/fstab [[email protected] ~]# tail -1 /etc/fstab # 加入开机自启动列表 /dev/mapper/myvg-mylv /mydata ext3 defaults 0 0 [[email protected] ~]# mount -a [[email protected] ~]# mkdir /mydata/data [[email protected] ~]# ls /mydata data lost+found [[email protected] ~]# chown -R mysql.mysql /mydata/data [[email protected] ~]# ll /mydata/data -d drwxr-xr-x 2 mysql mysql 4096 Dec 19 20:34 /mydata/data 四、创建mysql用户 [[email protected] ~]# groupadd -r mysql [[email protected] ~]# useradd -g mysql -r -d /mydata/data mysql 五、下载并编译安装mysql-5.5.28 [[email protected] tmp]# wget https://downloads.mariadb.com/archives/mysql-5.5/mysql-5.5.28.tar.gz [[email protected] tmp]# tar xf mysql-5.5.28.tar.gz [[email protected] tmp]# cd mysql-5.5.28 [[email protected] tmp]# cmake . -LH # 查看安装选项 [[email protected] mysql-5.5.28]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) [[email protected] mysql-5.5.28]# yum install -y ncurses-devel [[email protected] mysql-5.5.28]# rm -f CMakeCache.txt [[email protected] mysql-5.5.28]# make [[email protected] mysql-5.5.28]# make install 六、MySQL的初始化工作 [[email protected] mysql-5.5.28]# cd /usr/local/mysql [[email protected] mysql]# pwd /usr/local/mysql [[email protected] mysql]# ls bin COPYING data docs include INSTALL-BINARY lib man mysql-test README scripts share sql-bench support-files [[email protected] mysql]# chown -R .mysql . [[email protected] mysql]# ll total 76 drwxr-xr-x 2 root mysql 4096 Dec 19 21:09 bin -rw-r--r-- 1 root mysql 17987 Aug 29 2012 COPYING drwxr-xr-x 4 root mysql 4096 Dec 17 16:03 data drwxr-xr-x 2 root mysql 4096 Dec 19 21:09 docs drwxr-xr-x 3 root mysql 4096 Dec 19 21:09 include -rw-r--r-- 1 root mysql 7604 Aug 29 2012 INSTALL-BINARY drwxr-xr-x 3 root mysql 4096 Dec 19 21:09 lib drwxr-xr-x 4 root mysql 4096 Dec 12 10:39 man drwxr-xr-x 10 root mysql 4096 Dec 19 21:09 mysql-test -rw-r--r-- 1 root mysql 2552 Aug 29 2012 README drwxr-xr-x 2 root mysql 4096 Dec 19 21:09 scripts drwxr-xr-x 27 root mysql 4096 Dec 17 13:50 share drwxr-xr-x 4 root mysql 4096 Dec 19 21:09 sql-bench drwxr-xr-x 2 root mysql 4096 Dec 19 21:09 support-files [[email protected] mysql]# scripts/mysql_install_db --user=mysql --datadir=/mydata/data/ Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: ./bin/mysqladmin -u root password ‘new-password‘ ./bin/mysqladmin -u root -h CentOS6.5 password ‘new-password‘ Alternatively you can run: ./bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd . ; ./bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd ./mysql-test ; perl mysql-test-run.pl Please report any problems with the ./bin/mysqlbug script! [[email protected] mysql]# cp support-files/my-large.cnf /etc/my.cnf [[email protected] mysql]# vim /etc/my.cnf [[email protected] mysql]# grep -C 1 "datadir" /etc/my.cnf # 修改第一项,增加第二和第三项 thread_concurrency = 8 datadir = /mydata/data innodb_file_per_table = 1 [[email protected] mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld [[email protected] mysql]# chkconfig --add mysqld [[email protected] mysql]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 七、导出MySQL的PATH环境变量与头文件 [[email protected] mysql]# echo ‘export PATH=$PATH:/usr/local/mysql/bin‘ > /etc/profile.d/mysqld.sh [[email protected] mysql]# . /etc/profile.d/mysqld.sh [[email protected] mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql 八、启动之后连接MySQL,删除匿名用户、设置root密码及远程访问授权 [[email protected] mysql]# service mysqld start Starting MySQL... SUCCESS! (1)、删除匿名用户 [[email protected] mysql]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.5.28-log Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> SELECT User,Host,Password FROM mysql.user; +------+-----------+----------+ | User | Host | Password | +------+-----------+----------+ | root | localhost | | | root | CentOS6.5 | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | CentOS6.5 | | +------+-----------+----------+ 5 rows in set (0.00 sec) mysql> DROP USER ‘‘@‘CentOS6.5‘; Query OK, 0 rows affected (0.01 sec) mysql> DROP USER ‘‘@‘localhost‘; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye (2)、设置root用户密码 mysql> UPDATE mysql.user SET Password=PASSWORD(‘redhat‘) WHERE User=‘root‘; Query OK, 4 rows affected (0.06 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye (3)、远程访问授权 mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘redhat‘; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
时间: 2024-11-07 09:58:05