[关闭]
@mrz1 2018-01-24T13:49:26.000000Z 字数 9446 阅读 1176

yum安装和编译安装mariadb

编译


实现多实例

yum安装方式实现多实例

1.安装和启动

  1. 安装:yum install mariadb-server
  2. 路径:rpm -ql mariadb-server
  3. [root@centos7 ~]#ls /var/lib/mysql //默认没东西
  4. [root@centos7 ~]#systemctl start mariadb //启动mariadb
  5. [root@centos7 ~]#ls /var/lib/mysql //生成数据文件
  6. aria_log.00000001 aria_log_control ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock performance_schema test
  7. 配置文件
  8. [root@centos7 ~]#cat /etc/my.cnf
  9. [mysqld]
  10. port=3306 (这里以3306为例 想用什么端口在这里修改)
  11. datadir=/var/lib/mysql //数据库路径
  12. socket=/var/lib/mysql/mysql.sock //用于本机连接
  13. symbolic-links=0
  14. [mysqld_safe]
  15. log-error=/var/log/mariadb/mariadb.log
  16. pid-file=/var/run/mariadb/mariadb.pid
  17. !includedir /etc/my.cnf.d

2.创建目录和修改权限

  1. [root@centos7 ~]#mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv //创建目录
  2. [root@centos7 ~]#getent passwd mysql //因为是yum安装不需要创建账号
  3. mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
  4. [root@centos7 ~]#chown -R mysql.mysql /mysqldb/ //修改权限
  1. 准备配置文件
  1. [root@centos7 ~]#mysql -e 'show variables like "basedir"' //查看mysql安装目录
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | basedir | /usr |
  6. +---------------+-------+
  7. //生成三套实例
  8. [root@centos7 ~]#mysql_install_db --datadir=/mysqldb/3306/data --user=mysql --basedir=/usr
  9. [root@centos7 ~]#mysql_install_db --datadir=/mysqldb/3307/data --user=mysql --basedir=/usr
  10. [root@centos7 ~]#mysql_install_db --datadir=/mysqldb/3308/data --user=mysql --basedir=/usr
  11. //创建配置文件 以3306为例(3307,3307文件修改下数字即可)
  12. [root@centos7 ~]cp /etc/my.cnf /mysqldb/3306/etc/
  13. [root@centos7 ~]#cat /mysqldb/3306/etc/my.cnf
  14. [mysqld]
  15. datadir=/mysqldb/3306/data
  16. socket=/mysqldb/3306/socket/mysql.sock
  17. skip_grant_tables //再启动服务忽略授权变口令(_和- 都行)添加这一行表不能修改了
  18. symbolic-links=0
  19. [mysqld_safe]
  20. log-error=/mysqldb/3306/log/mariadb.log
  21. pid-file=/mysqldb/3306/pid/mariadb.pid
  22. [root@centos7 ~]#cat /usr/lib/systemd/system/mariadb.service //yum安装启动的配置文件
  23. 这里我们需要自己写配置文件;以3306为例(3307,3307文件修改下数字即可)
  24. [root@centos7 3306]#cat mysqld
  25. #!/bin/bash
  26. port=3306
  27. mysql_user="root"
  28. mysql_pwd="centos"
  29. cmd_path="/usr/bin" //参考 which mysqld_safe
  30. mysql_basedir="/mysqldb"
  31. mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock"
  32. function_start_mysql()
  33. {
  34. if [ ! -e "$mysql_sock" ];then
  35. printf "Starting MySQL...\n"
  36. ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
  37. /******************************************************************
  38. 破解口令 比上一行多 --skip_grant_tables
  39. ${cmd_path}/mysqld_safe --skip_grant_tables --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null &
  40. //再启动服务忽略授权变口令(_和- 都行)添加这一行表不能修改了
  41. /******************************************************************
  42. else
  43. printf "MySQL is running...\n"
  44. exit
  45. fi
  46. }
  47. function_stop_mysql()
  48. {
  49. if [ ! -e "$mysql_sock" ];then
  50. printf "MySQL is stopped...\n"
  51. exit
  52. else
  53. printf "Stoping MySQL...\n"
  54. ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
  55. fi
  56. }
  57. function_restart_mysql()
  58. {
  59. printf "Restarting MySQL...\n"
  60. function_stop_mysql
  61. sleep 2
  62. function_start_mysql
  63. }
  64. case $1 in
  65. start)
  66. function_start_mysql
  67. ;;
  68. stop)
  69. function_stop_mysql
  70. ;;
  71. restart)
  72. function_restart_mysql
  73. ;;
  74. *)
  75. printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
  76. esac

第四步:设置权限并启动

  1. [root@centos7 3306]#chmod 700 mysqld 设置权限 因为里面有密码 设置为700
  2. [root@centos7 3306]#ll ../3308/mysqld
  3. -rwx------ 1 root root 1000 Jan 23 18:18 ../3308/mysqld
  4. [root@centos7 3306]#ll ../3307/mysqld
  5. -rwx------ 1 root root 1000 Jan 23 18:17 ../3307/mysqld
  6. [root@centos7 3306]#ll ../3306/mysqld
  7. -rwx------ 1 root root 1000 Jan 23 18:15 ../3306/mysqld
  8. 启动多实例
  9. [root@centos7]#/mysqldb/3306/mysqld start
  10. [root@centos7]#/mysqldb/3307/mysqld start
  11. [root@centos7]#/mysqldb/3308/mysqld start
  12. [root@centos7 3306]#ss -ntl //查看端口
  13. LISTEN 0 50 *:3307 *:*
  14. LISTEN 0 50 *:3308 *:*
  15. LISTEN 0 50 *:3306 *:*

第五步:连接

  1. [root@centos7 ~]#mysql //直接这样连接会出现错误 需要指定路径
  2. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  3. [root@centos7 ~]#mysql -S /mysqldb/3306/socket/mysql.sock //指定路径 这是没口令的连接
  4. MariaDB [(none)]> show variables like "port"; //查看端口
  5. +---------------+-------+
  6. | Variable_name | Value |
  7. +---------------+-------+
  8. | port | 3306 |
  9. +---------------+-------+
  10. 1 row in set (0.00 sec)
  11. [root@centos7 ~]#mysql -S /mysqldb/3307/socket/mysql.sock -uroot -pcentos //这是有口令的连接 -u用户;-p密码

第六步:设置口令

  1. 命令:/mysqldb/3307/mysqld stop 关闭mysqldb/3307
  2. 第一种方法
  3. [root@centos7]#mysqladmin -uroot -S /mysqldb/3308/socket//mysql.sock password 'centos' //添加口令
  4. [root@centos7 3307]#/mysqldb/3308/mysqld stop 这里不输入口令停止不了
  5. Stoping MySQL...
  6. Enter password:
  7. /usr/bin/mysqladmin: connect to server at 'localhost' failed
  8. error: 'Access denied for user 'root'@'localhost' (using password: NO)'
  9. [root@centos7 3307]#/mysqldb/3308/mysqld stop 输入正确口令成功
  10. Stoping MySQL...
  11. Enter password:
  12. 第二种方法
  13. [root@centos7 ~]#mysql -S /mysqldb/3307/socket/mysql.sock
  14. MariaDB [(none)]> select user,password,host from mysql.user; 查看表内容
  15. +------+----------+-------------------+
  16. | user | password | host |
  17. +------+----------+-------------------+
  18. | root | | localhost |
  19. | root | | centos7.qifei.com |
  20. | root | | 127.0.0.1 |
  21. | root | | ::1 |
  22. | | | localhost |
  23. | | | centos7.qifei.com |
  24. +------+----------+-------------------+
  25. insert(插入) update(修改)delet(删除)
  26. 设置密码
  27. MariaDB [(none)]> update mysql.user set password=password("centos1") where user='root'; //注意这是改的所有
  28. Query OK, 4 rows affected (0.01 sec)
  29. Rows matched: 4 Changed: 4 Warnings: 0
  30. MariaDB [(none)]> select user,password,host from mysql.user;
  31. +------+-------------------------------------------+-------------------+
  32. | user | password | host |
  33. +------+-------------------------------------------+-------------------+
  34. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | localhost |
  35. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | centos7.qifei.com |
  36. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | 127.0.0.1 |
  37. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | ::1 |
  38. | | | localhost |
  39. | | | centos7.qifei.com |
  40. +------+-------------------------------------------+-------------------+
  41. 删除匿名账户
  42. MariaDB [(none)]> drop user ''@localhost;
  43. Query OK, 0 rows affected (0.00 sec)
  44. MariaDB [(none)]> drop user ''@centos7.qifei.com;
  45. Query OK, 0 rows affected (0.00 sec)
  46. MariaDB [(none)]> drop user 'root'@centos7.qifei.com;
  47. Query OK, 0 rows affected (0.02 sec)
  48. MariaDB [(none)]> drop user 'root'@'::1';
  49. Query OK, 0 rows affected (0.00 sec)
  50. MariaDB [(none)]> select user,password,host from mysql.user;
  51. MariaDB [(none)]> delete from mysql.user where host="centos7.qifei.com"; 这样也可以删除
  52. Query OK, 0 rows affected (0.00 sec)
  53. +------+-------------------------------------------+-------------------+
  54. | user | password | host |
  55. +------+-------------------------------------------+-------------------+
  56. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | localhost |
  57. | root | *07012D77331829FBC7415FCFE0041354CE238D41 | 127.0.0.1 |
  58. +------+-------------------------------------------+-------------------+
  59. 修改完刷新生效
  60. MariaDB [(none)]> flush privileges;
  61. Query OK, 0 rows affected (0.00 sec)

命令

  1. MariaDB [(none)]> show databases; 数据库列表
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. | test |
  9. +--------------------+

编译安装多实例

第一步:创建账户

  1. [root@centos7 ~]#useradd -r -s /sbin/nologin mysql
  2. [root@centos7 ~]#id mysql
  3. uid=988(mysql) gid=983(mysql) groups=983(mysql)
  4. [root@centos7 ~]#getent passwd mysql
  5. mysql:x:988:983::/home/mysql:/sbin/nologin

第二部:准备包组和需要的文件等

  1. [root@centos7 ~]#yum groupinstall "development tools" //安装包组
  2. [root@centos7 ~]#yum install cmake //安装cmake
  3. [root@centos7 ~]#tar xvf mariadb-10.2.12.tar.gz //解压
  4. [root@centos7 ~]#mkdir /mysqldb //创建数据库文件
  5. [root@centos7 ~]#chown mysql.mysql /mysqldb/ //数据库文件权限
  6. [root@centos7 ~]#yum install ncurses-devel
  7. [root@centos7 ~]#yum install gnutls-devel
  8. [root@centos7 ~]#yum install "libaio-devel"
  9. [root@centos7 ~]#yum install "openssl-devel"
  10. [root@centos7 ~]#yum install libxml2-devel
  11. 以上五个包是没有安装过,如果安装了请忽略!
  12. [root@centos7 ~]#cd mariadb-10.2.12/
  13. [root@centos7 mariadb-10.2.12]#cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql -DMYSQL_DATADIR=/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
  14. [root@centos7 mariadb-10.2.12]#make && make instal

第二步:path和生成数据实例及配置文件

  1. path
  2. [root@centos7 mysql]#echo 'PATH=/app/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
  3. [root@centos7 mysql]#. /etc/profile.d/mysql.sh
  4. 生成数据实例
  5. [root@centos7 app]#/app//mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3306/data --user=mysql
  6. [root@centos7 app]#ll /mysqldb/
  7. total 0
  8. drwxr-xr-x 3 root root 18 Jan 23 21:36 3306
  9. 配置文件
  10. cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
  11. [root@centos7 app]#vim /etc/my.cnf
  12. [mysqld]
  13. datadir=/mysqldb/3306/data //这里只需添加自己数据路径即可
  14. port = 3306
  15. [root@centos7 app]#cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
  16. [root@centos7 app]#vim /etc/init.d/mysqld
  17. 添加到启动服务
  18. [root@centos7 app]#chkconfig --add mysqld
  19. [root@centos7 app]#chkconfig --list
  20. mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  21. [root@centos7 app]#ll /etc/init.d/
  22. -rwxr-xr-x 1 root root 12184 Jan 23 21:43 mysqld
  23. [root@centos7 app]#chown -R mysql.mysql /mysqldb/3306/
  24. [root@centos7 app]#ll -d /mysqldb/3306/
  25. drwxr-xr-x 3 mysql mysql 18 Jan 23 21:36 /mysqldb/3306/
  26. 添加权限
  27. [root@centos7 app]#chgrp -R mysql /app//mysql/
  28. [root@centos7 app]#chmod 775 /app/mysql/

第三步:启动

  1. [root@centos7 ~]#service mysqld start //启动
  2. Starting mysqld (via systemctl): [ OK ]
  3. [root@centos7 ~]#ss -ntl
  4. LISTEN 0 80 :::3306 :::*
  5. 这是3306端口已经启动 需要添加端口 多实例
  6. [root@centos7 ~]#/app//mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3307/data --user=mysql
  7. [root@centos7 ~]#/app//mysql/scripts/mysql_install_db --basedir=/app/mysql --datadir=/mysqldb/3308/data --user=mysql
  8. 以下操作33073308都需要做 只是端口数字需要改变以下
  9. [root@centos7 ~]#vim /mysqldb/3307/my.cnf //修改和添加了这些
  10. port = 3307
  11. [mysqld]
  12. datadir=/mysqldb/3307/data
  13. port = 3307
  14. socket = /mysqldb/3307/mysql.sock
  15. [mysql_safe]
  16. log-error=/mysqldb/3307/mariadb.log
  17. pid-file=/mysqldb/3307/mariadb.pid
  18. [root@centos7 3307]#vim mysqld
  19. #!/bin/bash
  20. port=3307 记得修改这个端口
  21. mysql_user="root"
  22. mysql_sock="${mysql_basedir}/${port}/mysql.sock" 这里也修改了一下
  23. [root@centos7 3307]#./mysqld start 启动
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注