发布时间:2020/06/08 作者:天马行空 阅读(1484)
1.1 检查 linux 系统版本
[root@localhost ~]#cat /etc/system-release
1.2 检查是否安装了 mysql
[root@localhost ~]# rpm -qa | grep mysql [root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64
若存在 mysql 安装文件,则会显示 mysql安装的版本信息
如:mysql-connector-odbc-5.2.5-6.el7.x86_64
卸载已安装的MySQL,卸载mysql命令,如下:
将/var/lib/mysql文件夹下的所有文件都删除干净。
细节注意:
检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。
系统安装模式的是最小安装,所以没有这个数据库。
检查是否安装了 mariadb,如果有就使劲卸载干净:
[root@localhost ~]# rpm -qa | grep mariadb [root@localhost ~]# systemctl stop mariadb [root@localhost ~]# rpm -qa | grep mariadb [root@localhost ~]# rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64 [root@localhost ~]# rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64 [root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
1.3 系统内存检查
安装5.6以及以上版本的mysql需要服务器的内存至少在1G以上。
1.4 安装必要的软件包
[root@localhost ~]# yum -y install gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* make cmake
1.5 下载安装文件,下载源码版本,选择Source Code
[root@localhost ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.23.tar.gz
2.1 添加用户
[root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -r -g mysql mysql
2.2 创建安装目录
[root@localhost ~]# mkdir -p /home/wwwroot/mysql [root@localhost ~]# chown -R mysql:mysql /home/wwwroot/mysql
2.3 编译安装
[root@localhost ~]# tar -zxvf mysql-5.7.23.tar.gz [root@localhost ~]# cd mysql-5.7.23 [root@localhost ~]# cmake \ -DCMAKE_INSTALL_PREFIX=/home/wwwroot/mysql \ -DMYSQL_DATADIR=/home/wwwroot/mysql/data3306 \ -DSYSCONFDIR=/home/wwwroot/mysql/ \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/home/wwwroot/mysql/mysqld3306.sock\ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost \ -DMYSQL_USER=mysql \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci [root@localhost ~]# make && make install
参数说明:
DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安装路径
DMYSQL_DATADIR=/data/mysql:数据文件存放位置
DSYSCONFDIR=/etc:my.cnf路径
DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock:连接数据库socket路径
DMYSQL_TCP_PORT=3306:端口
DENABLED_LOCAL_INFILE=1:允许从本地导入数据
DWITH_PARTITION_STORAGE_ENGINE=1:安装支持数据库分区
DEXTRA_CHARSETS=all:安装所有的字符集
DDEFAULT_CHARSET=utf8:默认字符
DWITH_EMBEDDED_SERVER=1:嵌入式服务器
2.4 第一种安装方式:每个端口的配置文件独立
2.4.1 添加配置文件,并初始化数据库,实例化两个端口
my3306.cnf
[client] port = 3306 socket = /home/wwwroot/mysql/mysql3306.sock [mysqld] basedir = /home/wwwroot/mysql datadir = /home/wwwroot/mysql/data3306 port = 3306 socket = /home/wwwroot/mysql/mysql3306.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
my3307.cnf
[client] port = 3307 socket = /home/wwwroot/mysql/mysql3307.sock [mysqld] basedir = /home/wwwroot/mysql datadir = /home/wwwroot/mysql/data3307 port = 3307 socket = /home/wwwroot/mysql/mysql3307.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \ --defaults-file=/home/wwwroot/mysql/my3306.cnf \ --user=mysql \ --basedir=/home/wwwroot/mysql \ --datadir=/home/wwwroot/mysql/data3306 \ --initialize-insecure [root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \ --defaults-file=/home/wwwroot/mysql/my3307.cnf \ --user=mysql \ --basedir=/home/wwwroot/mysql \ --datadir=/home/wwwroot/mysql/data3307 \ --initialize-insecure
initialize-insecure#不需要密码
2.4.2 启动mysql后台运行
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe --defaults-extra-file=/home/wwwroot/mysql/my3306.cnf --user=mysql & [root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_safe --defaults-extra-file=/home/wwwroot/mysql/my3307.cnf --user=mysql &
如果只是单例(一台服务器只运行一个端口),可以用下面的方式添加服务,拷贝服务脚本到init.d目录
[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysql.server /etc/init.d/mysql [root@localhost ~]# chkconfig mysql --add [root@localhost ~]# chkconfig mysql on [root@localhost ~]# service mysql start [root@localhost ~]# service mysql restart [root@localhost ~]# service mysql stop
2.4.5 进入3307端口的mysql,初始化root密码
[root@localhost ~]# mysql -u root -p -S /home/wwwroot/mysql/mysql3307.sock [root@localhost ~]# SET PASSWORD = PASSWORD('123456'); [root@localhost ~]# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; [root@localhost ~]# flush privileges;
建立软连接,不然mysql -uroot执行不了
ln -s /home/wwwroot/mysql/bin/mysql /usr/bin
2.4.6 停止MYSQL实例,对应的sock文件
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3306.sock shutdown [root@localhost ~]# /home/wwwroot/mysql/bin/mysqladmin -u root -p123456 -S /home/wwwroot/mysql/mysql3307.sock shutdown
2.5 第二种安装方式:使用mysql自带的多实例
2.5.1 初始化数据库,使用同一个配置文件
my.cnf
[mysqld_multi] mysqld =/home/wwwroot/mysql/bin/mysqld_safe mysqladmin=/home/wwwroot/mysql/bin/mysqladmin log =/home/wwwroot/mysql/log/mysql_multi.log user =xxx password =xxx [mysqld3306] # 设置监听开放端口 [多实例中一定要不同] port = 3306 # 设置运行用户 #user=mysql basedir =/home/wwwroot/mysql # 设置数据目录 [多实例中一定要不同] datadir =/home/wwwroot/mysql/data3306 # 设置sock存放文件名 [多实例中一定要不同] socket =/home/wwwroot/mysql/mysql3306.sock #log-error =/home/wwwroot/mysql/log/mysql3306.log pid-file =/home/wwwroot/mysql/mysql3306.pid [mysqld3307] port = 3307 #user=mysql basedir =/home/wwwroot/mysql datadir =/home/wwwroot/mysql/data3307 socket =/home/wwwroot/mysql/mysql3307.sock #log-error =/home/wwwroot/mysql/log/mysql3307.log pid-file =/home/wwwroot/mysql/mysql3307.pid
2.5.2 初始化数据库
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \ --defaults-file=/home/wwwroot/mysql/my.cnf \ --user=mysql \ --basedir=/home/wwwroot/mysql \ --datadir=/home/wwwroot/mysql/data3306 \ --initialize-insecure [root@localhost ~]# /home/wwwroot/mysql/bin/mysqld \ --defaults-file=/home/wwwroot/mysql/my.cnf \ --user=mysql \ --basedir=/home/wwwroot/mysql \ --datadir=/home/wwwroot/mysql/data3307 \ --initialize-insecure
2.5.3 启动mysql
[root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi --defaults-file=/home/wwwroot/mysql/my.cnf start
有可能会报错,需要执行下面的代码设置PATH
[root@localhost ~]# vi /etc/profile
找到export PATH=段,加入:/home/wwwroot/mysql/bin
也可以使用
[root@localhost ~]# cp /home/wwwroot/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi [root@localhost ~]# service mysqld_multi start 3306,3307 [root@localhost ~]# service mysqld_multi restart [root@localhost ~]# service mysqld_multi stop
如果后面不加3306或者3307默认是对所有的实例进行操作,my.cnf中设置的mysqld_multi段中设置的用户密码在stop的时候会用到,因为是明文,所以需要修改启动脚本
[root@localhost ~]# vi bin/mysqld_multi 修改 my $com= join ' ', 'my_print_defaults', @defaults_options, $group; 为 my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
2.5.4 查看实例的运行状态
[root@localhost ~]# service mysqld_multi report [root@localhost ~]# /home/wwwroot/mysql/bin/mysqld_multi report