MySQL、MariaDB安装和多实例配置(2)

不使用rpm包安装,就需要对mysql进行初始化以创建一些文件、库和指定一些参数。但在初始化mysql前,要预先做一些操作。

shell> mkdir -p /mydata/data shell> useradd -r -s /sbin/nologin mysql shell> chown -R mysql.mysql /usr/local/mysql shell> chown -R mysql.mysql /mydata/data shell> cd /usr/local/mysql shell> scripts/mysql_install_db --datadir=/mydata/data --user=mysql shell> chown -R root.root /usr/local/mysql

执行mysql_install_db时会在/tmp下创建临时表,所以mysql用户需要对/tmp有写权限,否则执行实例初始化脚本时可能会报类似下面的错误:
ERROR: 1 Can't create/write to file '/tmp/#sql_7a0e_0.MYI' (Errcode: 13)
这说明没有写权限,所以需要修改/tmp目录的权限:

chmod 1777 /tmp

同样,mysql_install_db初始时如果提示已废弃,则使用如下方法:

bin/mysqld --initialize-insecure --datadir=/mydata/data --user=mysql

初始化完成后,提供配置文件和服务启动脚本。

shell> cp -a support-files/mysql.server /etc/init.d/mysqld shell> cp -a support-files/my-default.cnf /etc/my.cnf # 修改my.cnf的datadir shell> vim /etc/my.cnf [mysqld] datadir=/mydata/data

如果是centos7,则提供如下服务启动脚本(如有必要,修改pid文件路径)。

shell> cat /usr/lib/systemd/system/mysqld.service [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql Type=forking PIDFile=/var/run/mysqld/mysqld.pid # Disable service start and stop timeout logic of systemd for mysqld service. TimeoutSec=0 # Start main service ExecStart=/usr/local/mysql-5.7.19/bin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS # Use this to switch malloc implementation EnvironmentFile=-/etc/sysconfig/mysql # Sets open_files_limit LimitNOFILE = 5000 Restart=on-failure RestartPreventExitStatus=1 PrivateTmp=false

修改"root@localhost"密码。

shell> mysql mysql> alter user 'root'@'localhost' identified by '123456'; mysql> \q 1.2.2 安装后的规范化操作

编译安装或通用二进制安装后,一般都需要做一些额外的操作,包括设置环境变量、输出头文件和库文件、设置man路径。

echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh chmod +x /etc/profile.d/mysql.sh source /etc/profile.d/mysql.sh echo "MANPATH /usr/local/mysql/man" >>/etc/man.config echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf ldconfig ln -s /usr/local/mysql/include /usr/include/mysql 1.3 编译源码安装mysql

建议别没事找事,尝试编译装MySQL,完全是吃力不讨好的事。如果确实要编译安装,把my.cnf、服务管理脚本、编译选项等涉及到运行文件路径的项确保相同,例如pid文件、socket文件、datadir路径、log文件。并保证mysql涉及到的目录所有者和所属组都是mysql,例如默认的pid路径/var/run/mysql/。

mysql源码包下载地址:

1.3.1 编译安装过程

关于编译选项,见下文。

使用以下命令安装mysql 5.6。

yum -y install ncurses-devel cmake tar xf ~/mysql-5.6.37.tar.gz cd ~/mysql-5.6.37 cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.37 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_FAST_MUTEXES=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_SSL=bundled \ -DWITH_DEBUG=0 make make install

使用以下命令安装mysql 5.7。比上述多了最后一个boost相关设置项,不设置此项可能会cmake失败。

yum -y install ncurses-devel cmake tar xf ~/mysql-5.7.19.tar.gz cd ~/mysql-5.7.19 cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.19 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITH_FAST_MUTEXES=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_SSL=bundled \ -DWITH_DEBUG=0 \ -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost make make install

如果是centos7,则加上一项-DWITH_SYSTEMD=1,这会提供systemd脚本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/34940e79b6de6dc3cc1570e752003025.html