参考文档:https://xie.infoq.cn/article/5da9bfdfbdaabf7b0b982ab6e
https://blog.csdn.net/Lance_welcome/article/details/107314575
一、下载mysql 5.7+
# 下载mysql5.7.42版本
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
# 解压到/usr/local/soft/mysql目录下
tar -zxvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz
# 将解压所得文件夹移动到/usr/local目录下,并重命名文件夹为mysql
sudo mv mysql-5.7.42-linux-glibc2.12-x86_64 /usr/local/mysql
# 修改mysql文件夹的所有者和权限
sudo chown -R mysql:mysql /user/local/mysql
# 如果出现 chown: invalid user: ‘mysql:mysql’ 错误,说明mysql用户不存在,执行以下命令,操作完再执行更改权限命令
groupadd mysql
useradd -r -g mysql mysql
# 设置文件夹权限
sudo chown -R 755 /usr/local/mysql
二、配置mysql5.7
#1、把 mysql/bin 目录下的所有命令创建一个“快捷方式”,#把这个写到配置文件里,路径不同,记得要修改路径
#方式一:
echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
# 方式二:也可以使用编辑/etc/profile的方式,
vi /etc/profile
# 结尾增加配置
export PATH=$PATH:/usr/local/mysql/bin
# 生效配置文件
source /etc/profile
# 生效之后,我们可以打出 mysql,按 tab 补全键两下,就可以看到所有的 mysql/bin 下的都能出来,这样设置是相当于 windows 的快捷键,以便我们更好的利用
mysql mysqld mysqlimport mysql_ssl_rsa_setup
mysqladmin mysqld-debug mysql_install_db mysqltest_embedded
mysqlbinlog mysqld_multi mysql_plugin mysql_tzinfo_to_sql
mysqlcheck mysqld_safe mysqlpump mysql_upgrade
mysql_client_test_embedded mysqldump mysql_secure_installation mysqlxtest
mysql_config mysqldumpslow mysqlshow
mysql_config_editor mysql_embedded mysqlslap
#2、生成mysql的临时密码,
# 切换到mysql目录下
cd /usr/local/mysql/
#执行命令。生成临时数据库密码,需要自行记住root账号的密码,方便登录(还是注意路径看看是不是和你的一样),若data文件已经存在,删除掉再执行即可
mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data
# 2.1 若执行命令报错:“error while loading shared libraries :libaio.so.1:cannot open shared object file:No such file or directory”,说明缺失包,安装包即可
yum install libaio*
#安装完成再次执行就好了
mysqld --user=mysql --initialize --datadir=/usr/local/mysql/data
# 3、复制启动文件到/etc/init.d/目录,只需改动自己的路径即可
cp -ar /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 4、添加my.cnf配置文件,
cat /etc/my.cnf
# 若报cat: my.cnf: No such file or directory,则新增建my.cnf文件即可
cd /etc/
touch my.cnf
# 编辑my.cnf
vi my.cnf
# 内容(增加内容后保存退出即可):
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
skip-name-resolve
#设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
# 内容结束。。
# 5、给my.cnf配置执行权限
chmod -R 775 /etc/my.cnf
三、启动mysql服务&&设置开机自启
1、启动前线看有没有启动过
ps -ef|grep -v grep |grep mysql
ps -ef|grep -v grep |grep mysqld
2、没有进程,开始启动
#启动mysql服务命令:
/etc/init.d/mysqld start
#启动成功后打印的内容:
Starting MySQL.Logging to '/usr/local/mysql/data/localhost.localdomain.err'.
SUCCESS!
3、设置开机自启
#添加服务
chkconfig --add mysqld
#显示服务列表
chkconfig --list
4、修改root默认密码,输入刚刚记下的密码,进入到mysql
mysql -uroot -p
5、修改密码
#修改密码为123456
set password for root@localhost = password('123456');
6、修改密码后,退出(快捷键:ctrl+d)重新登录下:
mysql -uroot -p123456
四、开放远程登录&& 测试本地客户端连接
# 1、登录mysql数据库
mysql -uroot -p123456
# 2、切换到mysql数据库
use mysql;
# 3、修改用户权限
update user set user.Host='%' where user.User='root';
# 4、刷新权限
flush privileges;
远程连接不上,关闭防火墙,或者开放端口
关闭防火墙
# 关闭防火墙
# 查看状态,若是启动的
systemctl status firewalld.service
# 关闭防火墙
systemctl stop firewalld.service
# 永久关闭防火墙
systemctl disable firewalld.service
# 开启防火墙
systemctl start firewalld.service
开放端口
# 常见开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=53/udp --permanent
# 常见关闭
firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=443/tcp --permanent
firewall-cmd --zone=public --remove-port=22/tcp --permanent
firewall-cmd --zone=public --remove-port=21/tcp --permanent
firewall-cmd --zone=public --remove-port=53/udp --permanent
# 批量添加
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
# 查看端口
firewall-cmd --permanent --list-port
#查看状态
systemctl status firewalld或者 firewall-cmd --state
# 重新加载配置文件
firewall-cmd --reload
开放远程登录这时候我们就可以用 navicat、sqlyog 等链接工具来连接数据库了,端口 3306;自己可以测试一下,如果是直接在 linux 中用就不用测试了。
五、mysql创建新用户
1、创建用户
# 创建用户,test:用户名 123456:密码,10.200.100.130:指定ip可访问,若要其它可访问,则设置为%
CREATE USER 'test'@'10.200.100.130' IDENTIFIED BY '123456';
# 赋予服务器权限(这里是所有的权限)
GRANT GRANT OPTION ON *.* TO 'test'@'10.200.100.130';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'test'@'10.200.100.130';
2、赋予指定数据库权限
GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, TRIGGER, CREATE VIEW, SHOW VIEW, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TEMPORARY TABLES, LOCK TABLES, EVENT ON `ec`.* TO 'test'@'10.200.100.130';
# ec:数据库名称
GRANT GRANT OPTION ON `ec`.* TO 'test'@'10.200.100.130';