1:第一步先下载
mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
2:解压安装文件
tar -xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
这个解压缩后可以根据个人情况选择安装位置
例如我的:/app
我会mv mysql-5.7.20-linux-glibc2.12-x86_64 /app/mysql
3:添加用户组和用户
#添加用户组
groupadd mysql
#添加用户mysql到用户组mysql
useradd -g mysql mysql
4:安装
进入安装文件目录
cd /app/mysql
创建数据目录
mkdir data
先把安装文件归属给mysql用户
chown -R mysql:mysql ./
cp support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
#修改启动脚本
vi /etc/init.d/mysqld
#修改项:
basedir=/app/mysql/
datadir=/app/mysql/data
修改数据库配置文件
vi /etc/my.cnf
修改对应的信息
#skip-grant-tables
collation_server = utf8_general_ci
character_set_server = utf8
event_scheduler=ON
max_connections=1000
lower_case_table_names=1
port=3308
datadir=/app/mysql/data
socket=/app/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
初始化数据库
5.7以前执行一下命令
./scripts/mysql_install_db --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql
5.7以后版本
bin/mysqld --initialize --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql
mysqld --initialize --basedir=/app/mysql --datadir=/app/mysql/data --user=mysql
#加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了
export PATH=$PATH:/app/mysql/bin
source /etc/profile
启动mysql
service mysqld start
常见问题,执行完后登录提示root密码过期无法登录
可以先修改
vi /etc/my.cnf
添加如下语句
skip-grant-tables
启动数据库
mysql -u root -p直接按两次回车
use mysql
update user set authentication_string=password("123456")where user="root";
update user set host = '%',password_expired = 'N' where user='root';
flush privileges;
如果出现Can't find messagefile '/usr/share/mysql/errmsg.sys
vi /etc/my.cnf
添加如下语句
language = /app/mysql/share/english #此处为language配置项
如果出现ERROR 2002(HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'(
添加软连接的形式
ln –s /app/mysql/mysql.sock /var/lib/mysql
mysql8.0加上软连接也不行可以选择直接指定sock文件路径
mysql -uroot -p -S /app/mysql/mysql.sock
8.0版本如果出现
ERROR 2059(HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
可以先设置一下配置文件
将default_authentication_plugin=caching_sha2_password改为default_authentication_plugin=mysql_native_password
主备复制
1:分别root登陆mysql执行如下命令
增加复制用户并授权(主备都在172.10.20.*网段,为了方便主备切换,两边都建立)
GRANT REPLICATION SLAVE,REPLICATION CLIENT on *.* to repl@'172.10.20.%' identified by '123456';
2:配置/etc/my.cnf
第一服务器(主 172.10.20.10)
log_bin=mysql-bin
server_id=1
第二个服务器(备 172.10.20.11)
log_bin=mysql-bin
server_id=2
read_only=1
3:重启两个mysql服务器
4:登陆主(root)执行
show master status;
显示
File: mysql-bin.000001
Position: 154
5:登陆备(root)执行
测试mysql -urepl -h172.10.20.11-p9O*l4r3ZuOR/8A -P3308是否能连接到主库,不能需要检查防火墙或者/etc/my.cnf是否有访问限制,修改配置
mysql -uroot登陆本地库执行:
CHANGE MASTER TO
MASTER_HOST='172.10.20.10',
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1434,
MASTER_PORT=3308;
启动主从复制
start slave;
查看状态
show slave status;
如果出现显示mysql-bin文件显示乱码,可以检查
/etc/my.cnf
log_bin=mysql-bin
这个配置项后面是否有特殊字符或者空格之类的
新建mysql用户
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
GRANT ALL ON test.* TO 'test'@'%';