Mysql的安装与配置

mysql安装和配置

一、卸载rpm自带的mysql版本

  • 检查是否安装mysql:rpm -qa | grep mysql
  • 检查是否安装了mariadb:rpm -qa | grep mariadb
  • 卸载:rpm -e xxx
  • 强制卸载(普通卸载不成功的情况下):rpm -e --nodeps xxx

注意:在安装指定版本的mysql前必须先执行卸载

二、安装mysql

  • 下载tar.gz格式的mysql文件包
  • 创建软件的安装目录:mkdir /usr/applications
  • 解压文件包到安装目录:tar xzf 文件包 -C /usr/applications
  • 重命名:mv 解压后的文件包 新的文件包名
  • 添加安装目录到配置文件/etc/profile:export PATH=/usr/applications/mysql/bin:$PATH
  • 更新配置文件:source /etc/profile
  • 添加磁盘,创建分区并进行挂载,用于存放mysql中创建的数据

注意:挂载的时候需要配置/etc/fstab文件,在新建的挂在上建议把dev/新建分区名写成UUID形式,可以使用blkid查看UUID内容
例如:UUID="9ff5ea05-ecc0-404d-9ecf-4a3d00286941" /mnt/sdb1 xfs defaults,uquota,gquota 0 0

  • 在新的挂载目录创建/mysql/data目录:mkdir /mnt/新建的分区名/mysql/data

  • 创建用户并配置密码:

    • 创建用户:useradd 用户名
    • 配置密码:passwd 用户名
  • 为安装目录和数据的存放目录设置权限:

    • 安装目录:chown -R root /usr/applications/*
    • 数据存放目录:chown -R root /mnt/sdb1/mysql
  • 初始化mysql:mysqld --initialize-insecure --user=root --basedir=/usr/applications/mysql --datadir=/mnt/sdb1/mysql/data

mysql5.7提供了两个初始化方式:--initialize和--initialize-insecure,前者会创建一个临时的复杂密码,更加的安全
但是很麻烦,推荐使用后者初始化,不会生成密码。basedir是mysql安装目录,datadir是数据的存放目录。

2020-03-21T02:35:06.653633Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-03-21T02:35:07.005339Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-03-21T02:35:07.108492Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-03-21T02:35:07.182990Z 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: 93d72af1-6b1c-11ea-8876-080027f6c610.
2020-03-21T02:35:07.185803Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-03-21T02:35:07.187172Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
  • 配置mysql文件/etc/my.cnf
[mysqld]
user=root
basedir=/usr/applications/mysql
datadir=/mnt/sdb1/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock

  • 启动mysql服务:
    • sys-V方式:
      启动前必须先执行:cp /usr/applications/mysql/support-files/mysql.server /etc/init.d/mysqld,注意这一步必须执行,mysqld名称不能写错,否则会启动不了
      -方式一:service mysqld restart
      -方式二:/etc/init.d/mysqld restart(这个主要是在centos6中,7也可以使用)

            启动服务后,如果登陆出现-bash: mysql: 未找到命令,打开/etc/profile检查是否有错误,然后重新使用source编译,就可以正常登陆了
      
    • systemd方式:

      • 配置/etc/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
      ExecStart=/usr/applications/mysql/bin/mysqld --defaults-file=/etc/my.cnf
      # 每次修改只需要修改ExecStart这一行就可以了,前边是mysqld的路径,后便是my.cnf的路径
      
      LimitNOFILE = 5000
      
      
      • 保存退出
      • 直接运行systemctl start mysqld会报错
      Warning: mysqld.service changed on disk. Run 'systemctl daemon-reload' to reload units.
      Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
      
      • 根据提示,直接运行systemctl daemon-reload
      • 再次运行systemctl start mysqld
  • 关闭mysql服务:service mysqld stop
  • mysql的连接方式:
    • 本地socket连接:mysql -u root -p -S /tmp/mysql.sock
    • 域名和端口远程连续:mysql -u liuyang -p -h10.0.2.15 -P3306
    • 不进入mysql界面的情况下查询语句(免交互):mysql -u liuyang -p -h 10.0.2.15 -P 3306 -e 'show databases;'

    通过 -e 查询语句 来实现

    mysql -u liuyang -p -h 10.0.2.15 -P 3306 -e 'show databases;'
    Enter password:
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    +--------------------+
    
    • 恢复数据用 < 数据文件:mysql -u root -p < /路径/文件名.sql

    注意:使用这种恢复数据的时候,需要写名文件路径,并且这种方式多用于恢复数据的情况

    sql文件内容:
    show databases;
    create database test charset utf8mb4;
    
    登陆后查看内容:
    show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    +--------------------+
    5 rows in set
    Time: 0.019s
    
    • source用法:也用于数据的备份恢复,格式为:source /路径/文件.sql,source用于进入mysql交互界面后,< 用于未进入交互界面之前

三、多实例配置

  • 在数据存储目录下的mysql里创建多个目录,例如3306、3307、3308、3309等,分别在这些data目录下
    创建my.cnf配置文件
以3306配置文件为例:
[mysqld]
user=root
basedir=/usr/applications/mysql
datadir=/mnt/sdb1/mysql/3306/data
socket=/mysql/3306/mysql.sock
server_id=6
port=3306
log_error=/mysql/3306/mysql.log
log_bin=/mysql/3306/mysql-bin
[mysql]
socket/tmp/mysql.sock

  • 初始化数据:
    • mv /etc/my.cnf /etc/my.cnf.bak
    • 初始化多实例:
mysqld --initializer-insecure --basedir=/usr/applications/mysql --database=/mnt/sdb1/mysql/3306/data
mysqld --initializer-insecure --basedir=/usr/applications/mysql --database=/mnt/sdb1/mysql/3307/data
mysqld --initializer-insecure --basedir=/usr/applications/mysql --database=/mnt/sdb1/mysql/3308/data
mysqld --initializer-insecure --basedir=/usr/applications/mysql --database=/mnt/sdb1/mysql/3309/data
posted @ 2020-03-21 12:36  大道至诚  阅读(352)  评论(0编辑  收藏  举报