一、源码编译安装mariadb
生产环境中,大部分使用的都是二进制安装或者源码编译安装,yum安装很多要求和设置很繁琐,容易出现错误
此次源码编译安装需要先安装 cmake
1、准备cmake
[root@Centos6-server~]#rpm -q cmake package cmake is not installed [root@Centos6-server~]#yum install cmake ..... ========================================================================================================================== Package Arch Version Repository Size ========================================================================================================================== Installing: cmake x86_64 2.8.12.2-4.el6 base 8.0 M ..... Installed: cmake.x86_64 0:2.8.12.2-4.el6 .....
2、清除其他版本的mariadb软件文件
[root@Centos6-server~]#rpm -q mariadb package mariadb is not installed [root@Centos6-server~]#rpm -q mariadb-server package mariadb-server is not installed [root@Centos6-server~]#find / -name mysql* | xargs rm -rf
3、创建软件用户账号
[root@Centos6-server~]#useradd -r -s /sbin/nologin mysql [root@Centos6-server~]#id mysql uid=496(mysql) gid=495(mysql) groups=495(mysql)
4、安装编译安装的包组及准备相关文件
[root@Centos6-server~]#yum groupinstall "development tools" [root@Centos6-server~]#ls anaconda-ks.cfg mariadb-10.2.12 mariadb-10.2.12.tar.gz reset68.sh [root@Centos6-server~]#mkdir /data/mysqldb [root@Centos6-server~]#chown mysql.mysql /data/mysqldb [root@Centos6-servermariadb-10.2.12]#ls appveyor.yml config.h.cmake debian INSTALL-WIN-SOURCE mysql-test README.md strings win BUILD configure.cmake Docs KNOWN_BUGS.txt mysys scripts support-files wsrep BUILD-CMAKE COPYING EXCEPTIONS-CLIENT libmariadb mysys_ssl sql tests zlib client COPYING.thirdparty extra libmysqld pcre sql-bench unittest cmake CREDITS include libservices plugin sql-common VERSION CMakeLists.txt dbug INSTALL-SOURCE man randgen storage vio [root@Centos6-servermariadb-10.2.12]#gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) Copyright (C) 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5、准备安装配置选项
cmake . \ -DCMAKE_INSTALL_PREFIX=/app/mysql \ -DMYSQL_DATADIR=/data/mysqldb/ \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -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=/app/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_DEBUG=0 \ -DWITHOUT_MROONGA_STORAGE_ENGINE=1 make && make install [root@Centos6-servermariadb-10.2.12]#cmake . \ > -DCMAKE_INSTALL_PREFIX=/app/mysql \ > -DMYSQL_DATADIR=/data/mysqldb/ \ > -DSYSCONFDIR=/etc \ > -DMYSQL_USER=mysql \ > -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=/app/mysql/mysql.sock \ > -DDEFAULT_CHARSET=utf8 \ > -DDEFAULT_COLLATION=utf8_general_ci \ > -DENABLED_LOCAL_INFILE=1 \ > -DWITH_PARTITION_STORAGE_ENGINE=1 \ > -DWITH_DEBUG=0 \ > -DWITHOUT_MROONGA_STORAGE_ENGINE=1 ...... -- Configuring done -- Generating done -- Build files have been written to: /root/mariadb-10.2.12 -- Configuring done -- Generating done CMake Warning: Manually-specified variables were not used by the project: MYSQL_USER SYSCONFDIR WITHOUT_MROONGA_STORAGE_ENGINE WITH_DEBUG -- Build files have been written to: /root/mariadb-5.5.59
6、补充其他包
[root@Centos6-servermariadb-10.2.12]#yum install ncurse-devel [root@Centos6-servermariadb-10.2.12]#yum install gnutls-devel [root@Centos6-servermariadb-10.2.12]#yum install libevent-devel [root@Centos6-servermariadb-10.2.12]#yum install "libaio-devel" [root@Centos6-servermariadb-10.2.12]#yum install "openssl-devel" [root@Centos6-servermariadb-10.2.12]#yum install libxml2-devel [root@Centos6-servermariadb-10.2.12]#yum install xz-devel [root@Centos6-server~]#yum install ncurses-devel
7、调试相关选项
添加环境变量
[root@Centos6-server~]#ls /data/mysqldb/ [root@Centos6-server~]#ls /app/mysql/bin/ aria_chk myisam_ftdump mysql_convert_table_format mysql_plugin replace aria_dump_log myisamlog mysqld mysql_secure_installation resolveip aria_ftdump myisampack mysqld_multi mysql_setpermission resolve_stack_dump aria_pack my_print_defaults mysqld_safe mysqlshow wsrep_sst_common aria_read_log mysql mysqld_safe_helper mysqlslap wsrep_sst_mariabackup innochecksum mysqlaccess mysqldump mysqltest wsrep_sst_mysqldump mariabackup mysqladmin mysqldumpslow mysql_tzinfo_to_sql wsrep_sst_rsync mariadb_config mysqlbinlog mysql_find_rows mysql_upgrade wsrep_sst_xtrabackup mbstream mysqlcheck mysql_fix_extensions mysql_waitpid wsrep_sst_xtrabackup-v2 msql2mysql mysql_client_test mysqlhotcopy mytop myisamchk mysql_config mysqlimport perror [root@Centos6-server~]#echo 'PATH=/app/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh [root@Centos6-server~]#cat /etc/profile.d/mysql.sh PATH=/app/mysql/bin/:$PATH [root@Centos6-server~]#. /etc/profile.d/mysql.sh [root@Centos6-server~]#/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/data/mysqldb/3306/data --user=mysql #因为我使用的是Cenots6.9安装的10.12,所以报了一些警告! WARNING: The host 'Centos6-server' could not be looked up with /app/mysql/bin/resolveip. This probably means that your libc libraries are not 100 % compatible with this binary MariaDB version. The MariaDB daemon, mysqld, should work normally with the exception that host name resolving will not work. This means that you should use IP addresses instead of hostnames when specifying MariaDB privileges ! Installing MariaDB/MySQL system tables in '/data/mysqldb/3306/data' ... ------------------------------------------------------------------------------------- 警告:无法使用/app/mysql/bin/resolveip查找主机“Centos6-server”。这可能意味着您的libc库与此二进制MariaDB版本不是100%兼容的。 MariaDB守护进程mysqld应该正常工作,但主机名解析不起作用。这意味着你应该使用IP地址而不是主机名 指定MariaDB权限时!在'/data /mysqldb/3306/data'中安装MariaDB /MySQL系统表 ------------------------------------------------------------------------------------- OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system ------------------------------------------------------------------------------------- 要在启动时启动mysqld,必须将support-files/mysql.server复制到系统的正确位置 ------------------------------------------------------------------------------------- PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! --->请记住为MariaDB root用户设置密码! To do so, start the server, then issue the following commands: '/app/mysql/bin/mysqladmin' -u root password 'new-password' '/app/mysql/bin/mysqladmin' -u root -h Centos6-server password 'new-password' Alternatively you can run: '/app/mysql/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 MariaDB Knowledgebase at http://mariadb.com/kb or the MySQL manual for more instructions. You can start the MariaDB daemon with: cd '/app/mysql' ; /app/mysql/bin/mysqld_safe --datadir='/data/mysqldb/3306/data' You can test the MariaDB daemon with mysql-test-run.pl cd '/app/mysql/mysql-test' ; perl mysql-test-run.pl Please report any problems at http://mariadb.org/jira The latest information about MariaDB is available at http://mariadb.org/. You can find additional information about the MySQL part at: http://dev.mysql.com Consider joining MariaDB's strong and vibrant community: https://mariadb.org/get-involved/ [root@Centos6-server~]#tree -d /data/mysqldb/ /data/mysqldb/ └── 3306 └── data ├── mysql ├── performance_schema └── test [root@Centos6-server~]#ls /app/mysql/support-files/ --->选取适合配置文件 binary-configure my-huge.cnf my-large.cnf my-small.cnf mysql-log-rotate policy wsrep_notify magic my-innodb-heavy-4G.cnf my-medium.cnf mysqld_multi.server mysql.server wsrep.cnf [root@Centos6-server~]#cp /app/mysql/support-files/my-large.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf'? y [root@Centos6-server~]#vim /etc/my.cnf --->修改配置文件 [mysqld] datadir=/data/mysqldb/3306/data [root@Centos6-server~]#cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld --->用给定的模板当作启动配置文件 [root@Centos6-server~]#vim /etc/init.d/mysqld [root@Centos6-server~]#chkconfig --list mysqld service mysqld supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add mysqld') [root@Centos6-server~]#chkconfig --add mysqld --->加入启动服务 [root@Centos6-server~]#chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@Centos6-server~]#chown -R mysql.mysql /data/mysqldb/3306/ --->修改数据库所属主组 [root@Centos6-server~]#ll -d /data/mysqldb/3306/ drwxr-xr-x 3 mysql mysql 4096 Jan 23 02:29 /data/mysqldb/3306/ [root@Centos6-server~]#chmod -R 700 /data/mysqldb/ --->修改数据库权限 [root@Centos6-server~]#ll -d /data/mysqldb/3306/ drwx------ 3 700 mysql 4096 Jan 23 02:29 /data/mysqldb/3306/ [root@Centos6-server~]#ll /app/mysql/ -d --->给mysql在 /app/mysql添加属组 drwxr-xr-x 12 root root 4096 Jan 23 02:21 /app/mysql/ [root@Centos6-server~]#chgrp -R mysql /app/mysql/ --->给mysql在 /app/mysql添加写权限 [root@Centos6-server~]#chmod 775 /app/mysql/ [root@Centos6-server~]#ll /app/mysql/ -d drwxrwxr-x 12 root mysql 4096 Jan 23 02:21 /app/mysql/ [root@Centos6-server~]#service mysqld start --->启动成功 Starting MySQL.180123 18:54:29 mysqld_safe Logging to '/data/mysqldb/3306/data/Centos6-server.err'. 180123 18:54:29 mysqld_safe Starting mysqld daemon with databases from /data/mysqldb/3306/data .. SUCCESS!
二、教材二进制编译过程
(1) 准备用户
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 –m –d /app/data mysql(2) 准备数据目录
以/app/data为例,建议使用逻辑卷
chown mysql:mysql /app/data(3) 准备二进制程序
tar xf mariadb-VERSION-linux-x86_64.tar.gz -C /usr/local
cd /usr/local;ln -sv mariadb-VERSION mysql
chown -R root:mysql /usr/local/mysql/(4) 准备配置文件
配置格式:类ini格式,各程序由单个配置文件提供配[prog_name]
配置文件查找次序:后面覆盖前面的配置文件
/etc/my.cnf -->/etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
mkdir /etc/mysql/
cp support-files/my-large.cnf /etc/mysql/my.cnf
[mysqld]中添加三个选项:
datadir = /app/data
innodb_file_per_table = on
skip_name_resolve = on 禁止主机名解析,建议使用(5)创建数据库文件
cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/app/data --user=mysql(6)准备日志文件
touch /var/log/mysqld.log
chown mysqld /var/log/mysqld.log(7)准备服务脚本,并启动服务
cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
service mysqld start(8)安全初始化
/user/local/mysql/bin/mysql_secure_installation
#给数据单独分区 [root@centos7mini-2~]#fdisk /dev/sda Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): p Device Boot Start End Blocks Id System /dev/sda1 * 2048 4196351 2097152 83 Linux /dev/sda2 4196352 109053951 52428800 83 Linux /dev/sda3 109053952 150996991 20971520 83 Linux /dev/sda4 150996992 209715199 29359104 5 Extended /dev/sda5 150999040 155193343 2097152 82 Linux swap / Solaris Command (m for help): n All primary partitions are in use Adding logical partition 6 First sector (155195392-209715199, default 155195392): Using default value 155195392 Last sector, +sectors or +size{K,M,G} (155195392-209715199, default 209715199): +10G Partition 6 of type Linux and of size 10 GiB is set Command (m for help): t Partition number (1-6, default 6): Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): p Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d3aae Device Boot Start End Blocks Id System /dev/sda1 * 2048 4196351 2097152 83 Linux /dev/sda2 4196352 109053951 52428800 83 Linux /dev/sda3 109053952 150996991 20971520 83 Linux /dev/sda4 150996992 209715199 29359104 5 Extended /dev/sda5 150999040 155193343 2097152 82 Linux swap / Solaris /dev/sda6 155195392 176166911 10485760 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [root@centos7mini-2~]#partprobe Warning: Unable to open /dev/sr0 read-write (Read-only file system). /dev/sr0 has been opened read-only. [root@centos7mini-2~]#fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d3aae Device Boot Start End Blocks Id System /dev/sda1 * 2048 4196351 2097152 83 Linux /dev/sda2 4196352 109053951 52428800 83 Linux /dev/sda3 109053952 150996991 20971520 83 Linux /dev/sda4 150996992 209715199 29359104 5 Extended /dev/sda5 150999040 155193343 2097152 82 Linux swap / Solaris /dev/sda6 155195392 176166911 10485760 8e Linux LVM #创建逻辑卷 [root@centos7mini-2~]#pvcreate /dev/sda6 Physical volume "/dev/sda6" successfully created. [root@centos7mini-2~]#pvs PV VG Fmt Attr PSize PFree /dev/sda6 lvm2 --- 10.00g 10.00g [root@centos7mini-2~]#vgcreate mysqldata /dev/sda6 -s 4M Volume group "mysqldata" successfully created [root@centos7mini-2~]#vgs VG #PV #LV #SN Attr VSize VFree mysqldata 1 0 0 wz--n- <10.00g <10.00g [root@centos7mini-2~]#vgdisplay --- Volume group --- VG Name mysqldata System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <10.00 GiB PE Size 4.00 MiB Total PE 2559 Alloc PE / Size 0 / 0 Free PE / Size 2559 / <10.00 GiB VG UUID FTJuZE-BVbH-qAup-woFM-El6Y-p4Rv-wb2Qgw [root@centos7mini-2~]#lvcreate -n lv_mysqldata -l 100%FREE mysqldata Logical volume "lv_mysqldata" created. [root@centos7mini-2~]#lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_mysqldata mysqldata -wi-a----- <10.00g [root@centos7mini-2~]#lvdisplay --- Logical volume --- LV Path /dev/mysqldata/lv_mysqldata LV Name lv_mysqldata VG Name mysqldata LV UUID Ht2RuM-1qAW-VOPJ-GO2w-2r1I-p2Oi-IJh6WH LV Write Access read/write LV Creation host, time centos7mini-2, 2018-02-19 13:45:24 +0800 LV Status available # open 0 LV Size <10.00 GiB Current LE 2559 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0 #创建文件系统 [root@centos7mini-2~]#mkfs.xfs /dev/mysqldata/lv_mysqldata meta-data=/dev/mysqldata/lv_mysqldata isize=512 agcount=4, agsize=655104 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2620416, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0\ [root@centos7mini-2~]#mkdir /data -pv [root@centos7mini-2/]#vim /etc/fstab UUID=2fb078aa-57e5-43a1-aefe-eeb792bff3ef /data xfs defaults 0 0 #挂载 [root@centos7mini-2/]#mount -a [root@centos7mini-2/]#df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/mysqldata-lv_mysqldata 10G 33M 10G 1% /data [root@centos7mini-2/]#chown -R mysql.mysql /data [root@centos7mini-2/]#chmod 770 /data [root@centos7mini-2/]#mkdir /data/mysqldb #创建默认数据库相关内容 [root@centos7mini-2mysql]#pwd /usr/local/mysql [root@centos7mini-2mysql]#scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql #注意:必须在这个路径下执行这条命令 Installing MariaDB/MySQL system tables in '/data/mysqldb' ... 2018-02-19 14:09:45 139791179409216 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release. 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 MariaDB 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 centos7mini-2 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 MariaDB Knowledgebase at http://mariadb.com/kb or the MySQL manual for more instructions. You can start the MariaDB daemon with: cd '.' ; ./bin/mysqld_safe --datadir='/data/mysqldb' You can test the MariaDB daemon with mysql-test-run.pl cd './mysql-test' ; perl mysql-test-run.pl Please report any problems at http://mariadb.org/jira The latest information about MariaDB is available at http://mariadb.org/. You can find additional information about the MySQL part at: http://dev.mysql.com Consider joining MariaDB's strong and vibrant community: https://mariadb.org/get-involved/ #添加配置文件 [root@centos7mini-2~]#cp /usr/local/mysql/files/my-huge.cnf /etc/my.cnf [root@centos7mini-2~]#vim /etc/my.cnf [mysqld] datadir=/data/mysqldb port = 3306 #修改服务启动脚本 [root@centos7mini-2~]#cp /usr/local/mysql/files/mysql.server /etc/init.d/mysqld [root@centos7mini-2~]#chkconfig --add mysqld [root@centos7mini-2mysql]#chkconfig --list mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@centos7mini-2mysql]#chkconfig mysqld on #运行一次安全脚本 [root@centos7mini-2~]#mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y #设置root口令 New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y #删除匿名用户 ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] n #是否禁用远程root连接 ... skipping. By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] y #删除test库 - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] y #是否加载权限表 ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
三、实现多实例
1、准备多实例数据库
[root@Centos6-server~]#mkdir /data/mysqldb/{3306,3307,3308}/{pid,log,etc,data} -pv [root@Centos6-server~]#/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/data/mysqldb/3307/data --user=mysql WARNING: The host 'Centos6-server' could not be looked up with /app/mysql/bin/resolveip. This probably means that your libc libraries are not 100 % compatible with this binary MariaDB version. The MariaDB daemon, mysqld, should work normally with the exception that host name resolving will not work. This means that you should use IP addresses instead of hostnames when specifying MariaDB privileges ! Installing MariaDB/MySQL system tables in '/data/mysqldb/3307/data' ... 180123 18:59:25 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release. --->'THREAD_CONCURRENCY'已被弃用,并将在未来版本中删除 180123 18:59:25 [Note] /app/mysql/bin/mysqld (mysqld 5.5.59-MariaDB) starting as process 20253 ... --->作为进程20253开始 OK Filling help tables... 180123 18:59:26 [Warning] 'THREAD_CONCURRENCY' is deprecated and will be removed in a future release. 180123 18:59:26 [Note] /app/mysql/bin/mysqld (mysqld 5.5.59-MariaDB) starting as process 20262 ... OK [root@Centos6-server~]#/app/mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/data/mysqldb/3308/data --user=mysql ..... [root@Centos6-server~]#tree -d /data/mysqldb /data/mysqldb/ ├── 3306 │ ├── data │ │ ├── mysql │ │ ├── performance_schema │ │ └── test │ ├── etc │ ├── log │ └── pid ├── 3307 │ ├── data │ │ ├── mysql │ │ ├── performance_schema │ │ └── test │ ├── etc │ ├── log │ └── pid └── 3308 ├── data │ ├── mysql │ ├── performance_schema │ └── test ├── etc ├── log └── pid/data/mysqldb [root@Centos6-server~]#vim /data/mysqldb/3307/etc/my.cnf ..... [mysqld] --->修改端口号 datadir=/data/mysqldb/3307/data port=3307 [mysql_safe] --->添加的日志和pid路径 log-error=/data/mysqldb/3307/log/mariadb.log pid-file=/mysqldb/3307/pid/mariadb.pid [root@Centos6-server3307]#./mysqld start Starting MySQL... [root@Centos6-server3308]#./mysqld start Starting MySQL... [root@Centos6-server3307]#ss -ntlp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* users:(("mysqld",20163,15)) LISTEN 0 50 *:3307 *:* users:(("mysqld",21976,15)) LISTEN 0 50 *:3308 *:* users:(("mysqld",21662,15))
[root@Centos6-server3307]#vim mysqld #!/bin/bash port=3307 mysql_user="root" mysql_pwd="centos" cmd_path="/app/mysql/bin" mysql_basedir="/data/mysqldb" mysql_sock="${mysql_basedir}/${prot}/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ] ; then printf "^[[1;32m Starting MySQL...^[[0m \n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/{port}/etc/my.cnf &> /dev/null & else |--->启动服务配置文件的路径,配置文件内有启动命令 printf "^[[1;5;33m MySQL is running...^[[0m \n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ] ; then printf "^[[1;5;33m MySQL is stopped...^[[0m \n" exit else printf "^[[1;31m Stoping MySQL...^[[0m \n" ${cmd_path}/mysqladmin -u ${mysql_user } -p${mysql_pwd} -S ${mysql_sock} shutdown fi |--->关闭数据库专用语句,不要用kill关闭,容易导致数据丢失 } |--->并且建议加上密码才能关闭,防止他人误操作 function_restart_mysql() { printf "^[[1;36m Restarting MySQL...^[[0m \n" function_stop_mysql sleep 2 function_start_mysql } case $ in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: ${mysql_basedir}/${prot}/bing/mysqld {start|stop|restart}\n" esac [root@Centos6-server3308]#vim mysqld #!/bin/bash port=3308 mysql_user="root" mysql_pwd="centos" cmd_path="/app/mysql/bin" mysql_basedir="/data/mysqldb" mysql_sock="${mysql_basedir}/${port}/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ] ; then pritnf "^[[1;32m Starting MySQL...^[[0m \n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "^[[1;5;33m MySQL is running...^[[0m \n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ] ; then printf "^[[1;5;33m MySQL is stopped...^[[0m \n" exit else printf "^[[1;31m Stoping MySQL...^[[0m \n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "^[[1;36m Restarting MySQL...^[[0m \n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) pritnf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esca
2、配置文件内启动过程
[root@Centos6-server~]#vim /etc/my.cnf ..... $exec --datadir="$datadir" --socket="$socketfile"\ --pid-file="mypidfile" \ --basedir=/usr --user=mysql > /dev/null 2>&1 & safe_pid=$!
3、配置mysql服务密码及删除空用户
生成数据库时,提示修改密码及删除空用户
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER ! --->请记住为MariaDB root用户设置密码! To do so, start the server, then issue the following commands: '/app/mysql/bin/mysqladmin' -u root password 'new-password' '/app/mysql/bin/mysqladmin' -u root -h Centos6-server password 'new-password' Alternatively you can run: '/app/mysql/bin/mysql_secure_installation' --->建议先使用这个脚本,修改密码并删除空用户
使用命令修改密码
#在centos命令行加密码 [root@Centos6-server~]#mysqladmin -uroot -S /data/mysqldb/3308/mysql.sock password 'centos' [root@Centos6-server~]#/data/mysqldb/3308/mysqld stop Stoping MySQL... [root@Centos6-server~]#/data/mysqldb/3308/mysqld start Starting MySQL... #在mysql里面修改密码,下面登陆的就是使用空用户及空口令登陆的 [root@Centos6-server~]#mysql -S /data/mysqldb/3307/mysql.sock Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 1 Server version: 5.5.59-MariaDB Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> select user,password,host from mysql.user; +------+----------+----------------+ | user | password | host | +------+----------+----------------+ | root | | localhost | | root | | centos6-server | | root | | 127.0.0.1 | | root | | ::1 | | | | localhost | | | | centos6-server | +------+----------+----------------+ 6 rows in set (0.01 sec) #使用update命令,修改root账号密码,使用了password()函数,生成加密口令 MariaDB [(none)]> update mysql.user set password=password("centos") where user='root'; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0 MariaDB [(none)]> select user,password,host from mysql.user; +------+-------------------------------------------+----------------+ | user | password | host | +------+-------------------------------------------+----------------+ | root | *128977E278358FF80A246B5046F51043A2B1FCED | localhost | | root | *128977E278358FF80A246B5046F51043A2B1FCED | centos6-server | | root | *128977E278358FF80A246B5046F51043A2B1FCED | 127.0.0.1 | | root | *128977E278358FF80A246B5046F51043A2B1FCED | ::1 | | | | localhost | | | | centos6-server | +------+-------------------------------------------+----------------+ 6 rows in set (0.00 sec) #使用dorp命令,删除空用户 MariaDB [(none)]> drop user ''@'localhost e; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> drop user ''@'centos6-server'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> drop user '@'::1'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> drop user centos6-server'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> select user,password,host from mysql.user ; +------+-------------------------------------------+----------------+ | user | password | host | +------+-------------------------------------------+----------------+ | root | *128977E278358FF80A246B5046F51043A2B1FCED | localhost | | root | *128977E278358FF80A246B5046F51043A2B1FCED | 127.0.0.1 | +------+-------------------------------------------+----------------+ 2 rows in set (0.00 sec) #修改后,要刷新,才能生效 MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> quit Bye [root@Centos6-server~]#mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.59-MariaDB Source distribution ..... MariaDB [(none)]> show variables like 'port' ; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.01 sec)
4、yum安装实现多实例
yum可以指定源地址,安装特定的版本
安装好后,建立多实力的目录,以存放相关数据及配置文件
最好使用逻辑卷进行存储,这样后期方便扩容,单独分区磁盘,没有办法进行扩容
[root@centos7mini-2~]#mkdir /mysqldb/{3306,3307,3308} -pv [root@centos7mini-2~]#mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv [root@centos7mini-2~]#chown -R mysql.mysql /mysqldb/ #注意:如果是源码安装,还需要指定--basedir [root@centos7mini-2~]#mysql_install_db --datadir=/mysqldb/3306/data --user=mysql --basedir=usr [root@centos7mini-2~]#mysql_install_db --datadir=/mysqldb/3307/data --user=mysql --basedir=usr [root@centos7mini-2~]#mysql_install_db --datadir=/mysqldb/3308/data --user=mysql --basedir=usr #制作多实例配置文件 [root@centos7mini-2~]#cp /etc/my.cnf /mysqldb/3306/etc [root@centos7mini-2~]#vim /mysqldb/3306/etc/my.cnf [mysqld] port=3306 #默认3306是不需要加的,但是多实例其他的需要加上,例如3307 datadir=/mysqldb/3306/data socket=/mysqldb/3306/socket/mysql.sock [mysqld_safe] log-error=/mysqldb/3306/log/mariadb.log pid-file==/mysqldb/3306/pid/mariadb.pid [root@centos7mini-2~]#cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf [root@centos7mini-2~]#cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf [root@centos7mini-2~]#sed -i 's/3306/3307/' /mysqldb/3307/etc/my.cnf [root@centos7mini-2~]#sed -i 's/3306/3308/' /mysqldb/3307/etc/my.cnf #修改启动脚本 [root@centos7mini-2~]#vim /mysqldb/3306/mysqld #!/bin/bash port=3306 mysql_user="root" mysql_pwd="centos" cmd_path="/usr/bin" mysql_basedir="/mysqldb" mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ] ; then pritnf "^[[1;32m Starting MySQL...^[[0m \n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "^[[1;5;33m MySQL is running...^[[0m \n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ] ; then printf "^[[1;5;33m MySQL is stopped...^[[0m \n" exit else printf "^[[1;31m Stoping MySQL...^[[0m \n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "^[[1;36m Restarting MySQL...^[[0m \n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) pritnf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esca [root@centos7mini-2~]#cp /mysqldb/3306/mysqld /mysqldb/3307/mysqld [root@centos7mini-2~]#chmod 700 /mysqldb/3306/mysqld [root@centos7mini 3306]#./mysqld start [root@centos7mini-2~]#mysql -S /mysqldb/3307/socket/mysql.sock MariaDB [(none)]> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3307 | +---------------+-------+ 1 row in set (0.00 sec)
5、修改多实例数据库登陆口令
[root@centos7mini~]#mysqladmin -uroot -S /mysqldb/3307/socket/mysql.sock password 'centos'
转载于:https://blog.51cto.com/exia00linux/2069489