一、关闭Selinux
selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:先临时改为警告模式:setenforce 0
永久关闭 Vim /etc/sysconfig/selinux,
把SELINUX=enforcing改为SELINUX=disabled
二、解压mysql5.7.29压缩包
上传mysql5.7.29压缩包 通过FTP 或者RZ命令上传
tar -zxvf mysql-linux-glibc2.12-x86_64.tar.gz
三、移动更改名称
mv mysql-linux-glibc2.12-x86_64 /usr/local/
mv mysql-linux-glibc2.12-x86_64/ mysql
四、创建用户组和用户
useradd mysql
passwd mysql 输入mysql密码
groupadd mysql useradd -r -g mysql mysql
cd / && mkdir -p /data/mysql_data/
chmod 777 -R /usr/local/mysql/
chmod 777 -R /data/mysql_data/
chown mysql:mysql -R /data/mysql_data
五、修改配置文件
vim /etc/my.cnf
增加以下:
[mysqld]
datadir=/data/mysql_data
socket=/data/mysql_data/mysql.sock
server_id=1
port=3306
symbolic-links=0
log-error=/data/mysql_data/mysqld.log
pid-file=/data/mysql_data/mysqld.pid
log_bin=/data/mysql_data/mysql-bin
expire_logs_days = 7
#log_slave_updates = 1
log_timestamps = system
character_set_server = utf8
lower_case_table_names = 1
max_connections = 1000
auto_increment_offset=1
auto_increment_increment=1
log-slave-updates
sync_binlog=1
log_bin_trust_function_creators=1
sql_mode=
transaction_isolation=READ-COMMITTED
binlog_format=mixed
max_allowed_packet=104857600
sql_mode=IGNORE_SPACE
[client]
#collation_server = utf8_general_ci
#character_set_server = utf8
参照附件:
六、启动并查看密码
cd /usr/local/mysql/bin/
输入启动命令
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
查看密码root初始化密码
tail -200 /data/mysql_data/mysqld.log|grep localhost
2022-01-10T19:22:59.926545-08:00 1 [Note] A temporary password is generated for root@localhost: ;*.eovTq7t+a
记录密码
七、开机启动
cd /usr/local/mysql/
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
八、启动、重启、停止命令
su – mysql
cd /usr/local/mysql/
service mysqld start
启动成功
service mysqld reload
service mysqld stop
命令记录:
启动:service mysqld start
停止:service mysqld stop
重启:service mysqld restart
重载配置:service mysqld reload
九、查看进程
service mysqld start
ps -ef|grep mysql
查看mysql 进程
netstat -ano |grep "3306" #查看3306端口
十、数据库初始化
cd /usr/local/mysql/bin
./mysql -u root -p
初始化密码
set password for root@'localhost' = password('Root.123');
到此MySQL搭建完成,从库按这个步骤搭建,需要改动的只有/etc/my.cnf server_id=1 改为server_id=2,从库初始化完成后,开始主主配置。
刷新内存
flush privileges;
重新登录:
./mysql -uroot -pRoot.123
命令记录:
mysqladmin -u用户名 -p旧密码 password 新密码
旧密码记录
SET PASSWORD FOR '用户名'@'主机' = PASSWORD(‘密码');
grant all privileges on *.* to '用户名'@'%' identified by '密码' with grant option;
flush privileges;
配置环境变量:
find / -name mysql.server
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysqld
vim .bash_profile
增加:
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
source .bash_profile
十一、赋权
mysql -uroot -pRoot.123
mysql>GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'Root.123';
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'Root.123';
mysql>flush privileges;
视情况开启:
mysql>set global log_bin_trust_function_creators=1;
mysql>show global variables like 'log_bin_trust_function_creators';
mysql>set auto_increment_increment=1;
mysql>set auto_increment_offset=1;
mysql>show variables like "%increment%";
查看权限:
SELECT user,host FROM mysql.user;
命令记录:
创建数据库:
CREATE DATABASE `statsdb` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
//grant all privileges on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'portal'@'%' identified by 'Portal.123' with grant option;
授予用户在本地服务器对该数据库的全部权限
grant all privileges on *.* to 'root'@'localhost' identified by 'root';
刷新权限flush privileges;
1、create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库
采用create schema和create database创建数据库的效果一样。
2、create user '[用户名称]'@'%' identified by '[用户密码]';--创建用户
create user 'nacos'@'%' identified by 'nacos';--创建用户
密码8位以上,包括:大写字母、小写字母、数字、特殊字符
%:匹配所有主机,该地方还可以设置成‘localhost’,代表只能本地访问,例如root账户默认为‘localhost‘
3、grant select,insert,update,delete,create on [数据库名称].* to [用户名称];--用户授权数据库
*代表整个数据库
4、flush privileges ;--立即启用修改
5、revoke all on *.* from tester;--取消用户所有数据库(表)的所有权限
6、delete from mysql.user where user='tester';--删除用户
7、drop database [schema名称|数据库名称];--删除数据库
常见问题
问题一:
[root@localhost bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
2022-01-11T02:14:24.636177Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-01-11T02:14:24.637749Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2022-01-11T02:14:24.637776Z 0 [ERROR] Aborting
解决方法:删除data/MYSQL
问题二:
解决方法:Mysql用户启动
问题三:
Root删除lock文件