(下面的步骤统一使用root用户操作)
1)到官网下载linux版本安装包:
MySQL :: MySQL Community Downloadshttps://dev.mysql.com/downloads/
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
3)下载完毕后上传到linux服务器
tar -xzvf /opt/software/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
将其解压到指定路径,并且通过mv命令修改名字为mysql
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql.mysql /usr/local/mysql
或者
chown mysql:mysql /usr/local/mysql
[root@linux100 msyql]# mkdir data
先安装依赖包,再进行初始化数据库
yum install libaio
/usr/local/mysql/bin/mysqld --user=mysql \
--basedir=/usr/local/mysql/ \
--datadir=/usr/local/mysql/data \
--initialize
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
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start
在配置文件/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
mysql -u root mysql
#修改密码
mysql> update mysql.user set authentication_string=password('123456') where user='root';
#立即生效
mysql> flush privileges;
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
先通过查看binlog服务已经开启: show variables like 'log_bin%'
[mysqld]
#binlog日志名称前缀
log-bin=mysqlbin-log
#默认值未0,如果使用默认值则不能和从节点通信,这个值的区间是:1到(2^32)-1
server-id=1
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)
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