Linux平台使用通用二进制包部署MySQL多实例

    科技2024-05-08  200

    文章目录

    第1章 操作系统环境及安装规划1.1 看MySQL支持的平台1.2 操作系统的基本环境1.3 程序安装的目录规划1.4 实例部署的目录规划1.5 非官方多实例的图解 第2章 MySQL程序的下载和部署2.1 程序的下载地址2.2 卸载mariadb库2.3 创建相关的用户2.4 安装相关的依赖2.5 安装MySQL程序 第3章 MySQL 3306实例的部署3.1 部署3306实例3.2 停启3306实例3.3 加入开机自启动3.4 创建管理用户3.5 连接mysql实例 第4章 MySQL 3307实例的部署4.1 部署3307实例4.2 停启3307实例4.3 加入开机自启动4.4 创建管理用户4.5 连接mysql实例

    第1章 操作系统环境及安装规划

    1.1 看MySQL支持的平台

    官方地址:https://www.mysql.com/support/supportedplatforms/database.html

    1.2 操作系统的基本环境

    #### 系统版本 [root@node21 ~]# cat /etc/redhat-release;uname -r;uname -m CentOS Linux release 7.5.1804 (Core) 3.10.0-862.el7.x86_64 x86_64 #### 数据盘的挂载 [root@node21 ~]# df -h|grep "/data" /dev/sdb 100G 33M 100G 1% /data #### Selinux的状态 [root@node21 ~]# getenforce # 查看selinux的状态,状态为已关闭 Disabled #### 网卡的信息 [root@node21 ~]# ifconfig ens33|awk -F "[ :]+" 'NR==2{print $3}' # 它是可以上网的 10.0.0.21 [root@node21 ~]# ifconfig ens34|awk -F "[ :]+" 'NR==2{print $3}' # 内网IP地址 172.16.1.21 #### 是否可访问互联网 [root@node21 ~]# ping -c 2 www.baidu.com|head -2 PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data. 64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=37.2 ms #### 内存(测试环境,内存只有2G) [root@node21 ~]# free -h total used free shared buff/cache available Mem: 1.8G 104M 1.5G 8.9M 173M 1.6G Swap: 4.0G 0B 4.0G #### 操作系统的字符集 [root@node21 ~]# echo $LANG zh_CN.UTF-8 #### 关闭firewalld防火墙状态 systemctl stop firewalld.service # 临时关闭firewalld防火墙 systemctl disable firewalld.service # 不让其开机自启动 systemctl mask firewalld.service # 让其不能启动

    1.3 程序安装的目录规划

    /data/apps/ # 将程序安装到该目录下,安装好以后,其实就是如后面的目录 /data/apps/mysql # 这不是个目录,这是个软链接文件

    1.4 实例部署的目录规划

    3306实例的目录规划

    /data/mysql |___3306 <== 以实例的端口来命名 |___data # 里面存放3306实例的数据 |___etc # 里面存放3306实例的配置文件 |___script # 里面存放3306实例的启停脚本 |___run # 里面存放3306实例的pid和socket文件 |___logs # 里面存放相关的日志 |__errlog # 里面存放错误日志 |__binlog # 里面存放binlog日志 |__relaylog # 里面存放中继日志(单实例虽然用不着,但也规划好) |__slowlog # 里面存放慢查询日志

    3307实例的目录规划

    /data/mysql |___3307 <== 以实例的端口来命名 |___data # 里面存放3306实例的数据 |___etc # 里面存放3306实例的配置文件 |___script # 里面存放3306实例的启停脚本 |___run # 里面存放3306实例的pid和socket文件 |___logs # 里面存放相关的日志 |__errlog # 里面存放错误日志 |__binlog # 里面存放binlog日志 |__relaylog # 里面存放中继日志(单实例虽然用不着,但也规划好) |__slowlog # 里面存放慢查询日志

    1.5 非官方多实例的图解

    01:共用一套mysql server程序。共用服务器资源。 02:端口不能冲突,因为是在一台服务器上。 03:各自拥有单独的配置文件(my.cnf)。 04:各自拥有单独的数据目录(datadir)来存放数据。 05:各自拥有单独的pid文件,保存在不同的目录。 06:各自拥有单独的socket文件,保存在不同的目录。 07:各自日志文件保存到不同的目录。 08:各自拥有启停脚本,保存到不同的目录 优点:逻辑清楚,减少维护风险 缺点:步骤稍微多点(不是事,优点大于缺点)

    第2章 MySQL程序的下载和部署

    这里指的程序是MySQL Community Server软件包,而不是指客户端程序包、库程序包等。

    2.1 程序的下载地址

    https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.28-linux-glibc2.12-x86_64.tar

    2.2 卸载mariadb库

    [root@node21 ~]# rpm -qa|grep mariadb mariadb-libs-5.5.64-1.el7.x86_64 [root@node21 ~]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64 [root@node21 ~]# rpm -qa|grep mariadb [root@node21 ~]#

    2.3 创建相关的用户

    chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow # 对相关文件解锁 useradd mysql -s /sbin/nologin -M # 创建用户且不让其可远程登录 id mysql # 查看是否创建成功

    2.4 安装相关的依赖

    #### 更改yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #### 安装相包的依赖包 chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow # 对相关文件解锁 yum install -y gcc gcc-c++ bison ncurses ncurses-devel numactl zlib libxml2 openssl libaio libstdc++-devel rpm -qa gcc gcc-c++ bison ncurses ncurses-devel numactl zlib libxml2 openssl libaio libstdc++-devel

    2.5 安装MySQL程序

    #### 创建/data/apps目录,用来部署mysql程序 mkdir /data/apps ls -ld /data/apps/ #### 创建/root/tools目录,并上传软件包(2.1章节下载的软件包) mkdir /root/tools cd tools/ rz # 如果没有这个命令,可以用yum install lrzsz -y来安装 #### 安装mysql程序 cd /root/tools/ ls mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /data/apps/ ln -sv /data/apps/mysql-5.7.28-linux-glibc2.12-x86_64/ /data/apps/mysql chown -R mysql:mysql /data/apps/mysql/ #### 配置环境变量 echo "export PATH=/data/apps/mysql/bin:$PATH" >>/etc/bashrc source /etc/bashrc echo $PATH which mysql #### 为mysql命令做别名 echo "alias mysql='mysql -A'" >>/etc/bashrc source /etc/bashrc alias mysql #### 删除上传的软件包 find /root/tools -type f -name "mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz" find /root/tools -type f -name "mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz"|xargs rm -f

    第3章 MySQL 3306实例的部署

    3.1 部署3306实例

    在第2章我已经部署好了MySQL server程序,这里只要初始化一个3306实例出来。

    创建实例的相关目录(在第1章中规划好了的)

    mkdir -p /data/mysql/3306/{data,etc,script,run,logs} ls -ld /data/mysql/3306/{data,etc,script,run,logs} mkdir -p /data/mysql/3306/logs/{errlog,binlog,relaylog,slowlog} ls -ld /data/mysql/3306/logs/{errlog,binlog,relaylog,slowlog}

    配置3306实例的配置文件

    #### 进入到/data/mysql/3306/etc目录下 cd /data/mysql/3306/etc pwd #### 配置3306实例的配置文件 cat >>my.cnf<<EOF [mysqld] ######## Basic Parameter server_id=21 user=mysql port=3306 basedir=/data/apps/mysql datadir=/data/mysql/3306/data socket=/data/mysql/3306/run/mysql.sock pid_file=/data/mysql/3306/run/mysql.pid character_set_server=utf8 skip_character_set_client_handshake=1 lower_case_table_names=1 ####Gtid replication gtid_mode=on enforce_gtid_consistency=1 binlog_gtid_simple_recovery=1 ######## Other Parameter skip_external_locking=on skip_name_resolve=on max_connections=800 max_connect_errors=1000 wait_timeout=1800 interactive_timeout=1800 max_allowed_packet=2048M ######## Ordinary Log ## log output mode and time log_output=FILE log_timestamps=system ## errlog log_error=/data/mysql/3306/logs/errlog/21_mysql_error.log ## binlog log_bin=/data/mysql/3306/logs/binlog/21_mysql_bin log_bin_index=/data/mysql/3306/logs/binlog/21_mysql_bin.index binlog_row_image=full binlog_rows_query_log_events=on binlog_format=row expire_logs_days=60 max_binlog_size=2G binlog_cache_size=16M sync_binlog=1 log_bin_trust_function_creators=1 ## slowlog slow_query_log=on slow_query_log_file=/data/mysql/3306/logs/slowlog/21_mysql_slow.log long_query_time=10 log_queries_not_using_indexes=on log_throttle_queries_not_using_indexes=10 log_slow_admin_statements=1 log_slow_slave_statements=1 ######## InnoDB Engine ## buffer pool default_storage_engine=innodb innodb_buffer_pool_size=1G innodb_buffer_pool_instances=8 innodb_buffer_pool_chunk_size=128M innodb_change_buffering=all innodb_change_buffer_max_size=25 innodb_buffer_pool_dump_at_shutdown=1 innodb_buffer_pool_dump_pct=40 innodb_buffer_pool_load_at_startup=1 ## sql mode and transaction group_concat_max_len=4294967295 explicit_defaults_for_timestamp=1 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' innodb_strict_mode=1 autocommit=on transaction_isolation=READ-COMMITTED transaction_write_set_extraction=OFF ## log buffer and redo log file innodb_flush_method=O_DIRECT innodb_log_buffer_size=16M innodb_flush_log_at_trx_commit=1 innodb_log_files_in_group=2 innodb_log_file_size=2G ## double write innodb_doublewrite=off ## table space innodb_data_file_path=ibdata1:5G;ibdata2:5G;ibdata3:5G:autoextend:max:20G innodb_autoextend_increment=64 innodb_temp_data_file_path=ibtmp1:5G:autoextend:max:20G innodb_file_per_table=1 ## undo table innodb_undo_tablespaces=3 innodb_undo_logs=128 innodb_undo_log_truncate=1 innodb_max_undo_log_size=20G innodb_purge_rseg_truncate_frequency=128 EOF

    编写3306实例的启停脚本

    #### 进入到/data/mysql/3306/script目录下 cd /data/mysql/3306/script/ pwd #### 编写3306实例的启动脚本 01:先vim mysqld后,按字母i进入到编辑模式; 02:到 https://blog.csdn.net/weixin_43733154/article/details/104577640 博客复制脚本内容 03:将复制的内存粘贴到mysqld文件中,按esc后,输入:wq保存退出 #### 更改启动脚本的权限 cd /data/mysql/3306/script/ ll mysqld chmod 700 mysqld ll mysqld #### 说明,脚本里面有个User变量和Pass变量 User=shut # 用户shut@localhost,后面要在实例中创建,权限shutdown *.* 密码chenliang Pass=chenliang # 这个是shut@localhost用户的密码

    初始化3306实例

    #### 更改相关目录的属主/组为mysql chown -R mysql:mysql /data/mysql/3306/ ls -ld /data/mysql/3306/ #### 初始化3306实例 mysqld --defaults-file=/data/mysql/3306/etc/my.cnf --user=mysql --basedir=/data/apps/mysql \ --datadir=/data/mysql/3306/data/ --initialize PS:参数说明: --defaults-file # 指定实例的配置文件,会读取[mysqld]选项下的参数,若与命令指定的冲突,以命令行的参数为准; --user # 指定用哪个用户来运行mysql,在操作系统得存在,得有权限读取相关文件(配置文件、文件),其实我my.cnf中的[mysqld]下有配置 --basedir # 指定mysql程序的安装路径,我配置文件my.cnf中[mysqld]选项下也有配置。 --datadir # 指定mysql实例的数据目录,我配置文件my.cnf中[mysqld]选项下也有配置。 --initialize # 创建默认库成功后退出,并且设置root@localhost用户的初始密码,密码保存在error日志中,初次登录时你得输入它,当连接后会强制你 # 更改超级用户的初始密码。 其实之条命令可以简写成: mysqld --defaults-file=/data/mysql/3306/etc/my.cnf --initialize 那么你的my.cnf中[mysqld]下得配置user参数、basedir参数、datadir参数 PS:扩展说明: 我想初始出默认的库,但不想让root@localhost用户有初始密码。我应该怎么做? 第一种: 将 --initialize 替换成 --initialize-insecure 第二种: --initialize 和 --initialize-insecure 可以同时存在,不分先后顺序 这样:你启动Mysql后,用root@localhost连接时会向你要密码,你直接回车,进到mysql实例后是可以做任何操作的。这时我们应该为其设置密码,不设置的话就 是你人有问题了。 ## 检查是否有错误 可以看/data/mysql/3306/logs/errlog/21_mysql_error.log,只要没有error就ok

    启动mysql 3306实例

    /data/mysql/3306/script/mysqld start sleep 5 netstat -lntup|grep 3306

    更改超级用户的密码和创建用于停止服务的用户

    #### 从错误日志中过滤出初始时随机生成的默认密码,我在my.cnf中配置了错误日志,若没配置,则错误日志在datadir变量指定的目录下 [root@node21 ~]# grep -i "password" /data/mysql/3306/logs/errlog/21_mysql_error.log 2020-06-06T15:05:00.511315+08:00 1 [Note] A temporary password is generated for root@localhost: YmGiq79IAr>j #### 登录3306实例更改root@localhost用户的密码和创建用于停止服务的用户shut@localhost [root@node21 ~]# mysql -uroot -p -S /data/mysql/3306/run/mysql.sock Enter password: <== 这里输入的密码是 YmGiq79IAr>j mysql> mysql> alter user 'root'@'localhost' identified by "chenliang"; # 修改超级用户的密码 Query OK, 0 rows affected (0.00 sec) mysql> mysql> create user 'shut'@'localhost' identified by "chenliang"; # 创建shut@localhost用户并设密码 Query OK, 0 rows affected (0.00 sec) mysql> mysql> grant shutdown on *.* to 'shut'@'localhost'; # 为shut@localhost用户进行授权 Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> mysql> flush privileges; # 刷新权限 Query OK, 0 rows affected (0.00 sec) mysql> mysql> exit # 退出登录 Bye

    3.2 停启3306实例

    前面用脚本启动了3306实例后,并连接到实例修改了超级用户root@localhost的密码,又创建了shut@localhost用户、设置密码、授权。这里停止3306实例主要是测试3306实例的启停脚本是否能够正常停止3306实例。然后再启动3306实例。

    #### 当前状态 [root@node21 ~]# netstat -lntup|grep 3306 tcp6 0 0 :::3306 :::* LISTEN 2517/mysqld #### 停止3306实例 [root@node21 ~]# /data/mysql/3306/script/mysqld stop Stop MySQL[3306] [ 确定 ] [root@node21 ~]# netstat -lntup|grep 3306 [root@node21 ~]# #### 再启动3306实例 [root@node21 ~]# /data/mysql/3306/script/mysqld start Start MySQL [3306] [ 确定 ] [root@node21 ~]# netstat -lntup|grep 3306 tcp6 0 0 :::3306 :::* LISTEN 3532/mysqld

    3.3 加入开机自启动

    echo -ne "\n# Boot start mysql service[3306]. USER:chenliang TIME:$(date +%F) \n/data/mysql/3306/script/mysqld start\n" >>/etc/rc.local tail -2 /etc/rc.local chmod 755 /etc/rc.d/rc.local

    3.4 创建管理用户

    这里创建一个管理员的用户,这个用户的是为我自己创建的,它对3306实例下所有库下的对象具备all权限(包含了很多的权限),同时具备给其它用户进行权限管理的权限。

    mysql -uroot -pchenliang -S /data/mysql/3306/run/mysql.sock create user 'chenliang'@'%' identified by "chenliang"; select user,host,authentication_string from mysql.user where user="chenliang" and host="%"; grant all on *.* to 'chenliang'@'%' with grant option; show grants for 'chenliang'@'%'; flush privileges; exit

    3.5 连接mysql实例

    这里用SQLyog客户端工具通过chenliang@%帐号去连接3306实例。我的PC机能够和服务器(vmware workstation上创建的虚拟机10.0.0.21)通信的。

    第4章 MySQL 3307实例的部署

    4.1 部署3307实例

    在第2章我已经部署好了MySQL server程序,这里要初始化一个3307实例出来。

    创建实例的相关目录(在第1章中规划好了的)

    mkdir -p /data/mysql/3307/{data,etc,script,run,logs} ls -ld /data/mysql/3307/{data,etc,script,run,logs} mkdir -p /data/mysql/3307/logs/{errlog,binlog,relaylog,slowlog} ls -ld /data/mysql/3307/logs/{errlog,binlog,relaylog,slowlog}

    配置3307实例的配置文件

    #### 进入到/data/mysql/3307/etc目录下 cd /data/mysql/3307/etc pwd #### 配置3306实例的配置文件 cat >>my.cnf<<EOF [mysqld] ######## Basic Parameter server_id=21 user=mysql port=3307 basedir=/data/apps/mysql datadir=/data/mysql/3307/data socket=/data/mysql/3307/run/mysql.sock pid_file=/data/mysql/3307/run/mysql.pid character_set_server=utf8 skip_character_set_client_handshake=1 lower_case_table_names=1 ####Gtid replication gtid_mode=on enforce_gtid_consistency=1 binlog_gtid_simple_recovery=1 ######## Other Parameter skip_external_locking=on skip_name_resolve=on max_connections=800 max_connect_errors=1000 wait_timeout=1800 interactive_timeout=1800 max_allowed_packet=2048M ######## Ordinary Log ## log output mode and time log_output=FILE log_timestamps=system ## errlog log_error=/data/mysql/3307/logs/errlog/21_mysql_error.log ## binlog log_bin=/data/mysql/3307/logs/binlog/21_mysql_bin log_bin_index=/data/mysql/3307/logs/binlog/21_mysql_bin.index binlog_row_image=full binlog_rows_query_log_events=on binlog_format=row expire_logs_days=60 max_binlog_size=2G binlog_cache_size=16M sync_binlog=1 log_bin_trust_function_creators=1 ## slowlog slow_query_log=on slow_query_log_file=/data/mysql/3307/logs/slowlog/21_mysql_slow.log long_query_time=10 log_queries_not_using_indexes=on log_throttle_queries_not_using_indexes=10 log_slow_admin_statements=1 log_slow_slave_statements=1 ######## InnoDB Engine ## buffer pool default_storage_engine=innodb innodb_buffer_pool_size=1G innodb_buffer_pool_instances=8 innodb_buffer_pool_chunk_size=128M innodb_change_buffering=all innodb_change_buffer_max_size=25 innodb_buffer_pool_dump_at_shutdown=1 innodb_buffer_pool_dump_pct=40 innodb_buffer_pool_load_at_startup=1 ## sql mode and transaction group_concat_max_len=4294967295 explicit_defaults_for_timestamp=1 sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' innodb_strict_mode=1 autocommit=on transaction_isolation=READ-COMMITTED transaction_write_set_extraction=OFF ## log buffer and redo log file innodb_flush_method=O_DIRECT innodb_log_buffer_size=16M innodb_flush_log_at_trx_commit=1 innodb_log_files_in_group=2 innodb_log_file_size=2G ## double write innodb_doublewrite=off ## table space innodb_data_file_path=ibdata1:5G;ibdata2:5G;ibdata3:5G:autoextend:max:20G innodb_autoextend_increment=64 innodb_temp_data_file_path=ibtmp1:5G:autoextend:max:20G innodb_file_per_table=1 ## undo table innodb_undo_tablespaces=3 innodb_undo_logs=128 innodb_undo_log_truncate=1 innodb_max_undo_log_size=20G innodb_purge_rseg_truncate_frequency=128 EOF

    编写3307实例的启停脚本

    #### 进入到/data/mysql/3307/script目录下 cd /data/mysql/3307/script/ pwd #### 编写3307实例的启动脚本 01:先vim mysqld后,按字母i进入到编辑模式; 02:到 https://blog.csdn.net/weixin_43733154/article/details/104577640 博客复制脚本内容 03:将复制的内存粘贴到mysqld文件中,按esc后,输入:wq保存退出 04:最重要的是要替换一些内容,使用的命令如下所示: sed -i 's#3306#3307#g' /data/mysql/3307/script/mysqld #### 更改启动脚本的权限 cd /data/mysql/3307/script/ ll mysqld chmod 700 mysqld ll mysqld #### 说明,脚本里面有个User变量和Pass变量 User=shut # 用户shut@localhost,后面要在实例中创建,权限shutdown *.* 密码chenliang Pass=chenliang # 这个是shut@localhost用户的密码

    初始化3307实例

    #### 更改相关目录的属主/组为mysql chown -R mysql:mysql /data/mysql/3307/ ls -ld /data/mysql/3307/ #### 初始化3307实例 mysqld --defaults-file=/data/mysql/3307/etc/my.cnf --user=mysql --basedir=/data/apps/mysql \ --datadir=/data/mysql/3307/data/ --initialize PS:参数说明: --defaults-file # 指定实例的配置文件,会读取[mysqld]选项下的参数,若与命令指定的冲突,以命令行的参数为准; --user # 指定用哪个用户来运行mysql,在操作系统得存在,得有权限读取相关文件(配置文件、文件),其实我my.cnf中的[mysqld]下有配置 --basedir # 指定mysql程序的安装路径,我配置文件my.cnf中[mysqld]选项下也有配置。 --datadir # 指定mysql实例的数据目录,我配置文件my.cnf中[mysqld]选项下也有配置。 --initialize # 创建默认库成功后退出,并且设置root@localhost用户的初始密码,密码保存在error日志中,初次登录时你得输入它,当连接后会强制你 # 更改超级用户的初始密码。 其实之条命令可以简写成: mysqld --defaults-file=/data/mysql/3307/etc/my.cnf --initialize 那么你的my.cnf中[mysqld]下得配置user参数、basedir参数、datadir参数 PS:扩展说明: 我想初始出默认的库,但不想让root@localhost用户有初始密码。我应该怎么做? 第一种: 将 --initialize 替换成 --initialize-insecure 第二种: --initialize 和 --initialize-insecure 可以同时存在,不分先后顺序 这样:你启动Mysql后,用root@localhost连接时会向你要密码,你直接回车,进到mysql实例后是可以做任何操作的。这时我们应该为其设置密码,不设置的话就 是你人有问题了。 ## 检查是否有错误 可以看/data/mysql/3307/logs/errlog/21_mysql_error.log,只要没有error就ok

    启动mysql 3307实例

    /data/mysql/3307/script/mysqld start sleep 5 netstat -lntup|grep 3307

    更改超级用户的密码和创建用于停止服务的用户

    #### 从错误日志中过滤出初始时随机生成的默认密码,我在my.cnf中配置了错误日志,若没配置,则错误日志在datadir变量指定的目录下 [root@node21 ~]# grep -i "password" /data/mysql/3307/logs/errlog/21_mysql_error.log 2020-06-06T15:05:00.511315+08:00 1 [Note] A temporary password is generated for root@localhost: -ytKkt/aN9J; #### 登录3306实例更改root@localhost用户的密码和创建用于停止服务的用户shut@localhost [root@node21 ~]# mysql -uroot -p -S /data/mysql/3307/run/mysql.sock Enter password: <== 这里输入的密码是 -ytKkt/aN9J; mysql> mysql> alter user 'root'@'localhost' identified by "chenliang"; # 修改超级用户的密码 Query OK, 0 rows affected (0.00 sec) mysql> mysql> create user 'shut'@'localhost' identified by "chenliang"; # 创建shut@localhost用户并设密码 Query OK, 0 rows affected (0.00 sec) mysql> mysql> grant shutdown on *.* to 'shut'@'localhost'; # 为shut@localhost用户进行授权 Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> mysql> flush privileges; # 刷新权限 Query OK, 0 rows affected (0.00 sec) mysql> mysql> exit # 退出登录 Bye

    4.2 停启3307实例

    前面用脚本启动了3307实例后,并连接到实例修改了超级用户root@localhost的密码,又创建了shut@localhost用户、设置密码、授权。这里停止3307实例主要是测试3307实例的启停脚本是否能够正常停止3307实例。然后再启动3307实例。

    #### 当前状态 [root@node21 ~]# netstat -lntup|grep 3307 tcp6 0 0 :::3307 :::* LISTEN 2577/mysqld #### 停止3307实例 [root@node21 ~]# /data/mysql/3307/script/mysqld stop Stop MySQL[3307] [ 确定 ] [root@node21 ~]# netstat -lntup|grep 3307 [root@node21 ~]# #### 再启动3307实例 [root@node21 ~]# /data/mysql/3307/script/mysqld start Start MySQL [3307] [ 确定 ] [root@node21 ~]# netstat -lntup|grep 3307 tcp6 0 0 :::3307 :::* LISTEN 3562/mysqld

    4.3 加入开机自启动

    echo -ne "\n# Boot start mysql service[3307]. USER:chenliang TIME:$(date +%F) \n/data/mysql/3307/script/mysqld start\n" >>/etc/rc.local tail -2 /etc/rc.local chmod 755 /etc/rc.d/rc.local

    4.4 创建管理用户

    这里创建一个管理员的用户,这个用户的是为我自己创建的,它对3307实例下所有库下的对象具备all权限(包含了很多的权限),同时具备给其它用户进行权限管理的权限。

    mysql -uroot -pchenliang -S /data/mysql/3307/run/mysql.sock create user 'chenliang'@'%' identified by "chenliang"; select user,host,authentication_string from mysql.user where user="chenliang" and host="%"; grant all on *.* to 'chenliang'@'%' with grant option; show grants for 'chenliang'@'%'; flush privileges; exit

    4.5 连接mysql实例

    这里用SQLyog客户端工具通过chenliang@%帐号去连接3307实例。我的PC机能够和服务器(vmware workstation上创建的虚拟机10.0.0.21)通信的。

    Processed: 0.012, SQL: 9