mysql 开发进阶篇系列 29 数据库二进制包安装

概述  

  对于二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经绎过编译,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择。

一.步骤1: 解压glib包

-- 在 /usr/local 下创建一个mysql文件夹,用来存放
[[email protected] local]# mkdir mysql
[[email protected] local]# ls
bin  etc  games  include  lib  lib64  libexec  mysql  sbin  share  src
-- 在原有/usr/tool目录将gz压缩包解压
[[email protected] tool]# tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisam_ftdump
mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisamchk
mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisamlog
mysql-5.7.23-linux-glibc2.12-x86_64/bin/myisampack
mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql
mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql_client_test_embedded
mysql-5.7.23-linux-glibc2.12-x86_64/bin/mysql_config_editor
.....
--将解压的文件复制到/usr/local/mysql目录下
[[email protected] tool]# sudo cp -r mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/mysql
--在mysql-->mysql-5.7.23-linux-glibc2.12-x86_64路径下 解压的文件共9个 目录如下: [[email protected] mysql]# ls mysql-5.7.23-linux-glibc2.12-x86_64 bin COPYING docs include lib man README share support-files

  注意:mysql-5.7.23-linux-glibc2.12-x86_64目录层次要去掉,变为/usr/local/mysql 下的9个目录,在文章后面会去掉这层。

  

二. 步骤2:    

  2.1 添加mysql用户 useradd -r -g 用户名 用户组

[[email protected] mysql]# groupadd mysql
[[email protected] mysql]# useradd -r -g mysql mysql

  2.2 切换到 /usr/local/mysql 目录下,改变目录拥有者为mysql

[[email protected] mysql]# chown -R  mysql.mysql /usr/local/mysql

  2.3 新环境安装libaio包 mysql 依赖于libaio

[[email protected] mysqld]# yum search libaio

三 步骤3:  

  安装mysql,使用 --initialize,basedir mysql基础目录,basedir mysql基础目录。

[[email protected] ~]# cd /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/bin
[[email protected] bin]# ./mysqld  --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2018-08-23T06:56:21.157088Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-08-23T06:56:21.157246Z 0 [ERROR] Can‘t find error-message file ‘/usr/local/mysql/share/errmsg.sys‘. Check error-message file location and ‘lc-messages-dir‘ configuration directive.
2018-08-23T06:56:26.287087Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-08-23T06:56:27.059913Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-08-23T06:56:27.138616Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: a7e28575-a6a1-11e8-af13-000c29affb65.
2018-08-23T06:56:27.154064Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed‘ cannot be opened.
2018-08-23T06:56:27.155635Z 1 [Note] A temporary password is generated for [email protected]: ro0ssOGT?ocf

四步骤4:

  4.1 创建RSA private key。

[[email protected] bin]# bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

  

  4.2 修改当前目录拥有者为 root 用户,修改data 目录拥有者为 mysql

[[email protected] bin]# chown -R root:root /usr/local/mysql
[[email protected] bin]# chown -R mysql:mysql /usr/local/mysql/data

五.步骤5 配置mysql(mysql.server)和my.cnf文件

--检查 etc/my.cnf文件是否存在 (二进制安装,默认配置文件在/etc/my.cnf)
    [[email protected] etc]# find -name  my.cnf
    ./my.cnf
 --将support-files 目录下的mysql.server文件复制到etc/init.d下
    [[email protected] ~]# cd /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/support-files
    [[email protected] support-files]# cp mysql.server /etc/init.d/mysql
 -- 配置/etc/init.d/mysql服务文件 添加basedir和datadir
    [[email protected] support-files]# vim /etc/init.d/mysql

    

   修改my.cnf  配置以下四个参数(注意:chkconfig -- level 35 mysqld on 不要加上,后面报错,又得去掉)
    

六.步骤6 启动mysql

[[email protected] bin]# service mysql start
/etc/init.d/mysql: line 239: my_print_defaults: command not found
    Starting MySQL ERROR! Couldn‘t find MySQL server (/usr/local/mysql/bin/mysqld_safe) 

--提示未找到路径,需要把"mysql-5.7.23-linux-glibc2.12-x86_64" 文件夹去掉,使用mv 将里面的文件移到/usr/locl/mysql下,共9个文件
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/README /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/COPYING /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/support-files /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/share /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/man /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/lib /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/include /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/docs /usr/local/mysql
[[email protected] bin]# mv /usr/local/mysql/mysql-5.7.23-linux-glibc2.12-x86_64/bin /usr/local/mysql
-- 再启动
[[email protected] bin]# service mysql start
Starting MySQL.2018-08-24T01:06:20.545225Z mysqld_safe error: log-error set to ‘/var/log/mariadb/mariadb.log‘, however file don‘t exists. Create writable for user ‘mysql‘.
 ERROR! The server quit without updating PID file (/usr/local/mysql/data/hsr.pid).

-- 提示/var/log/mariadb/mariadb.log 不存在, 打开my.cnf 能看到定义的默认路径
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

--创建目录 给权限
[[email protected] bin]# mkdir /var/log/mariadb
[[email protected] bin]# touch /var/log/mariadb/mariadb.log
[[email protected] bin]# chown -R mysql:mysql  /var/log/mariadb/
-- 再启动
[[email protected] bin]# service mysql start
Starting MySQL.... ERROR! The server quit without updating PID file (/usr/local/mysql/data/hsr.pid).

-- 错误信息是hsr.pid进程出问题,先查看下日志
[[email protected] ~]# cat /var/log/mariadb/mariadb.log

  
   在my.cnf中注释上面参数(#chkconfig --level 35 mysqld on),再启动
  
  上图意思是不能创建mysql.sock.lock 文件,一般是权限不足,如下设置好权限,启动成功
  

七 登录mysql

[[email protected] ~]# mysql -u root -p
bash: mysql: 未找到命令

  未找到命令,是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,就会找不到命令,需要映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

[[email protected] ~]#  ln -s /usr/local/mysql/bin/mysql /usr/bin
[[email protected] ~]# mysql -u -root -p
ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)

--错误信息是不能连接到本地的socket ,系统默认找到了/tmp目录下,需要设置链接文件
[[email protected] tmp]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
[[email protected] ~]# mysql -u -root -p
Enter password:

八. 设置密码  

  8.1 打开my.cnf文件,添加skip-grant-tables,来重置密码,如下所示
    
  8.2 启动服务,再次登录,在输入密码处按回车键进入。

[[email protected] ~]# vim /etc/my.cnf
[[email protected] ~]# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23

  8.3 进入mysql后,修改密码

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> update user set authentication_string=password(‘123456‘) where user=‘root‘;
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1

  退出mysql>quit;  编辑 my.cnf 注释掉#skip-grant-tables

 8.4 重启mysql服务,输入修改后的密码(123456)进入

[[email protected] ~]# service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.23

九 远程登录

-- 登录到mysql后设置权限
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
--  再设置密码
mysql> SET PASSWORD = PASSWORD(‘123456‘);
Query OK, 0 rows affected, 1 warning (0.00 sec)
-- 设置权限
mysql> ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)
-- 刷新权限
mysql>  flush privileges;
Query OK, 0 rows affected (0.01 sec)
-- 设置远程登录权限
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘ WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

  -- 在my.cnf中 添加端口,重启服务
  

-- 测试端口是否打开
[[email protected] ~]#  firewall-cmd    --query-port=3306/tcp
no
-- 防火墙设置
[[email protected] ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success
-- 重新加载
[[email protected] ~]# firewall-cmd --reload
success
-- 再次测试端口
[[email protected] ~]# firewall-cmd    --query-port=3306/tcp
yes

  -- 在windows端拼通成功
  

  --- 最后使用SQLyog连接成功
  
  

  

原文地址:https://www.cnblogs.com/MrHSR/p/9529870.html

时间: 2024-10-12 02:48:55

mysql 开发进阶篇系列 29 数据库二进制包安装的相关文章

mysql 开发进阶篇系列 55 权限与安全(安全事项 )

一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限,在安装mysql时就要重视安全问题. (1) 锁定mysql用户. (2) 其它任何用户都采取独立的账号登录,管理员通过mysql专有用户管理mysql服务,或者通过 root su到mysql用户下进行管理. (3) mysql用户目录下,除了数据文件目录,其它文件和目录属主都改为root. 我本

mysql 开发进阶篇系列 47 xtrabackup (完全备份恢复,恢复后重启失败总结)

一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全备份文件的目录,还原到datadir目录下. xtrabackup --copy-back --target-dir=/data/backups/ 可以使用xtrabackup --move-back选项恢复备份.这个选项类似于xtrabackup --copy-back,唯一的区别是它将文件移动到

mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)

1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间后回滚.系统默认值是50秒.用户可以根据业务自行设置.生产环境不推荐使用过大的 innodb_lock_wait_timeout 参数值. -- 查看事务超时时间 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout'; 也可以对当前会话进行超时设置如: set

mysql 开发进阶篇系列 41 mysql日志之慢查询日志

一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志.下面查看慢日志的几个参数: -- 是否开启慢日志 SHOW VARIABLES LIKE 'slow_query_log'; -- 慢日志文件记录位置 SHOW VARIABLES LIKE 'slow_query_

mysql 开发进阶篇系列 45 xtrabackup 安装与用户权限说明(系统用户和mysql用户)

一. 安装说明 安装XtraBackup 2.4 版本有三种方式: (1) 存储库安装Percona XtraBackup(推荐) (2 )下载的rpm或apt包安装Percona XtraBackup. (3) 源代码编译和安装. Percona为yum (Red Hat.CentOS和Amazon Linux AMI的RPM包)和apt (Ubuntu和Debian的.deb包)提供存储库,用于Percona Server.Percona XtraBackup和Percona Toolkit

mysql 开发进阶篇系列 36 工具篇mysqlshow(数据库对象查看工具)

一.概述 mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的. mysqlshow的使用方法如下: 如果不加任何选项,默认情况下,会显示所有数据库,下面将显示当前mysql中所有数据库. 二.下面是mysqlshow的一些常用选项 2.1 --count 显示数据库和表的统计信息 如果不指定数据库,则显示每个数据库的名称,表数据,库总记录行数.下面是查看所有数据库. 如果指定数据库

mysql 开发进阶篇系列 5 SQL 优化

一. 使用sql提示 sql 提示(sql hint)是优化数据库的一个重要手段, 是在sql语句中加入一些人为的提示来达到优化操作的目的. 1.1 use index 在查询语句中表名的后面,添加use index 强制mysql使用该索引,不考虑其它索引. EXPLAIN SELECT * FROM city USE INDEX(ix1) WHERE city_id=1; 1.2 ignore index 在查询语句中表名的后面,添加ignore index,使用mysql忽视一个或者多个索

mysql 开发进阶篇系列 19 MySQL Server(innodb_flush_log_at_trx_commit与sync_binlog)

一. innodb_flush_log_at_trx_commit 这个参数名称有个log,一看就是与日志有关.是指:用来控制缓冲区(log buffer)中的数据写入到日志文件(log file),以及日志文件数据刷新到磁盘(flush)的操作时机.对这个参数的设置值,可以对数据库在性能与数据安全之间,进行折中. 参数值解释: 当参数是0:日志缓冲数据会,每秒一次地写入到日志文件,并且把日志文件刷新到磁盘操作.该模式下在事务提交的时候,不会主动触发写入磁盘的操作. 当参数是1:每次事务提交时,

mysql 开发进阶篇系列 6 锁问题

一.概述 在数据库中,数据是属于共享资源,为了保证并发访问的一致性,有效性,产生了锁.接下来重点讨论mysql锁机制的特点,常见的锁问题,以及解决mysql锁问题的一些方法或建议. 相比其他数据库,mysql 锁机制比较简单,显著的特点是 不同的存储引擎支持不同的锁机制.在innodb中支持行锁和表锁,默认行锁. mysql 的三种锁归纳如下: 表级锁:开销小,加锁快,不会出现死锁,锁定粒度大,发生锁冲突的概率最高,并发度最低. 行级锁:开销大,加锁慢:会出现死锁,锁定粒度最小,发生锁冲突的概率