linux下mysql的下载、安装与配置

(下面的步骤统一使用root用户操作)

1、mysql的下载、安装

1.1 下载mysql安装包

1)到官网下载linux版本安装包:

MySQL :: MySQL Community Downloadshttps://dev.mysql.com/downloads/

linux下mysql的下载、安装与配置_第1张图片

2)选择对应的mysql版本

MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/

这里选择的是:mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

linux下mysql的下载、安装与配置_第2张图片

3)下载完毕后上传到linux服务器

1.2 解压安装

tar -xzvf /opt/software/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

将其解压到指定路径,并且通过mv命令修改名字为mysql

2、环境配置

2.1 创建用户和组

groupadd mysql
useradd -r -g mysql mysql

2.2 将安装目录所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql

或者

chown mysql:mysql /usr/local/mysql

2.3 创建data文件夹(进入mysql文件夹),用于存放数据库表之类的数据

[root@linux100 msyql]# mkdir data

2.4 初始化

先安装依赖包,再进行初始化数据库

yum install libaio

/usr/local/mysql/bin/mysqld --user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data \
--initialize

2.5 编辑配置文件

vim /etc/my.cnf

在配置文件中写入以下内容

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

2.6 将mysql加入到服务中 

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

2.7 开机启动

chkconfig mysql on

2.8 启动mysql服务

service mysql start

2.9 登陆mysql

在配置文件/etc/my.cnf中跳过密码登陆,所以可以免密登陆

/usr/local/mysql/bin/mysql -uroot -p

可以加入到环境变量

编辑配置文件

vim /etc/profile

#MYSQL
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

对于配置文件,可以在/etc/profile.d目录下创建一个dev_env.sh,专门用来添加自定义环境变量。(因为profile会遍历etc/profile.d下面的.sh文件) 

刷新配置

source /etc/profile

进入到mysql 

mysql -u root -p

3、初始化密码

3.1 直接进入mysql库

mysql -u root mysql

3.2 修改密码 

#修改密码
mysql> update mysql.user set authentication_string=password('123456') where user='root';
#立即生效 
mysql> flush privileges; 

3.3 初始化密码遇到的问题

1)使用或直接进去mysql库时,提示ERROR 1049 (42000): Unknown database 'mysql'

存在两种情况:(1)my.ini的权限问题(2)basedir路径配置问题

解决:先确定是否真的没有mysql这个库,再停止mysql服务 service mysql stop,再重新调整my.ini文件,最后重启mysql服务即可。

[root@linux100 ~]# cd /var/lib/mysql
[root@linux100 mysql]# ls -al | grep mysql

2)update更新密码时,提示ERROR 1054 (42S22): Unknown column 'Password' in 'field list'

是因为使用(mysql5.5.*)update user set password=password("123456") where user="root";

在5.5.*版本的mysql可以使用此方法修改密码,5.7版本下的mysql则会报以下错误提示,原因是 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string

(mysql5.7)update mysql.user set authentication_string=password('123456') where user='root';

3) Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 

解决方法:查看my.cnf里面的socket路径,直接软链连接过去即可

sudo ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

4、配置binlog

先通过查看binlog服务已经开启: show variables like 'log_bin%'

4.1 需要在my.cnf(/etc/my.cnf)里添加:

[mysqld]
#binlog日志名称前缀
log-bin=mysqlbin-log
#默认值未0,如果使用默认值则不能和从节点通信,这个值的区间是:1到(2^32)-1
server-id=1

4.2 配置后,重启mysql服务!验证binlog是否配置成功:

systemctl restart mysql
mysql> show variables like 'log_bin%';
+---------------------------------+------------------------------------------+
| Variable_name                   | Value                                    |
+---------------------------------+------------------------------------------+
| log_bin                         | ON                                       |
| log_bin_basename                | /usr/local/mysql/data/mysqlbin-log       |
| log_bin_index                   | /usr/local/mysql/data/mysqlbin-log.index |
| log_bin_trust_function_creators | ON                                       |
| log_bin_use_v1_row_events       | OFF                                      |
+---------------------------------+------------------------------------------+
5 rows in set (0.00 sec)

4.3 查看binlog记录:

mysql>  show binlog events \G;
*************************** 1. row ***************************
   Log_name: mysqlbin-log.000001
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 123
       Info: Server ver: 5.7.35-log, Binlog ver: 4
*************************** 2. row ***************************
   Log_name: mysqlbin-log.000001
        Pos: 123
 Event_type: Previous_gtids
  Server_id: 1
End_log_pos: 154
       Info: 

如果是使用innodb作为存储引擎,而要最好的一致性和持久,需要在my.cnf添加:

#每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认
innodb_flush_log_at_trx_commit=1 
#默认:0,表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新,如果这期间服务器crash,则会丢失部分数据,性能最高,
#如果配置为1,则表示每次事务提交都会刷新到磁盘,最安全,性能损耗较高
sync_binlog=1

你可能感兴趣的:(数据库,linux,mysql,运维)