centos7安装mysql

1,安装mysql

# 下载mysql源安装包

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

如果报错(-bash: wget: command not found),则:安装wget

yum -y install wget

# 安装mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm

检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"

2,配置允许远程访问mysql

 检查mysql是否能正常启动

#启动MySQL服务
systemctl start mysqld #如果失败(yum install mariadb-server -y),笔者执行了了一下安装经可以了,如果执行完了依然不行可以尝试ps(底部内容补充)中的方法

#查看MySQL的启动状态 
systemctl status mysqld 

#开机启动 
systemctl enable mysqld 
systemctl daemon-reload 

首次登陆配置(如果不需要密码可以直接进入mysql可以跳过此步,但需要进入后修改密码#mysql> set password for root@localhost = password('123456');

#1、停止mysql服务
service mysqld stop

#2、mysql配置文件修改为免密码登录。
vi /etc/my.cfg
# Disabling symbolic-links is recommended to prevent assorted security risks
skip-grant-tables #添加这句话,这时候登入mysql就不需要密码
symbolic-links=0

#3、启动 mysql 服务
service mysqld start

#4、以root身份登录mysql, 输入密码的时候直接回车 
mysql -uroot -p #输入命令回车进入,出现输入密码提示直接回车。
mysql> set password for root@localhost = password('123456');
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for root@localhost = password('123456'); or update user set authentication_string=PASSWORD("123456") where user="root";
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>flush privileges; #更新权限
mysql>quit; #退出

service mysqld stop # 停止mysql服务, 恢复mysql配置

vi /etc/my.cfg
# Disabling symbolic-links is recommended to prevent assorted security risks
# skip-grant-tables # 注释掉这句话
symbolic-links=0

service mysqld start # 启动mysql服务
mysql -uroot -p # 输入新密码登录

授权远程登陆

#添加远程登录用户-笔者是直接用的root用户,'%'表示允许所有的ip访问 
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 

#进行刷新
mysql>flush privileges;

查看是否授权成功

mysql> use mysql;
mysql> select host, user from user;

host改为%,表示允许所有机器访问。

尝试远程访问。如果成功,恭喜你!

如果失败,有可能是因为防火墙没有开启3306端口

添加规则,打开3306端口

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 

iptables添加/删除规则都是临时的,如果需要重启也生效,就要保存修改:

service iptables save //或者 /etc/init.d/iptables save  

如果报错:

The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.
(意思就是   服务命令只支持基本的LSB操作(启动、停止、重新启动、尝试重启、重新加载、强制重新加载、状态)。对于其他操作,请尝试使用systemctl。)

#First, stop and mask the firewalld service:
systemctl stop firewalld
systemctl mask firewalld

#Then, install the iptables-services package:
yum install iptables-services

#Enable the service at boot-time:
systemctl enable iptables

#Managing the service
systemctl [stop|start|restart] iptables

#Saving your firewall rules can be done as follows:
service iptables save

另一种方式:(我没实现,看人品)

vi /etc/sysconfig/iptables //在该文件中加入下面这条规则也是可以生效的  
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT 

重启防火墙使之生效

/etc/init.d/iptables restart(重启防火墙使配置生效)

其次还要检查一下my.cnf(my.ini)的配置,这里可以配置绑定ip地址。 
bind-address=127.0.0.1
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。

重启mysql 服务。

尝试远程访问。如果成功,恭喜你!

如果失败,那就重新检查一下刚才的配置吧!^_^

 远程连接报错:

解决用navicate远程连接数据库出现1045 access denied for user 'root'@'localhost' using password yes 

说明授权有问题

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

#查看MySQL密码强度验证规则修改密码
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

#修改密码
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('P@ssw0rd');
Query OK, 0 rows affected, 1 warning (0.00 sec)

#重新授权
mysql>  GRANT ALL PRIVILEGES ON *.* TO 'root' @'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

再次尝试远程连接

ps:

报错 Failed to start mysql.server.service: Unit not found.

# yum install mariadb-server -y //如果已安装可以省略  
# systemctl start mariadb.service //启动服务  
# systemctl enable mariadb.service //开机启动服务  
# mysql -u root -p //登录mysql 

(maria DB如同 MySQL 的影子版本,是 MySQL 的一个分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容)

原文地址:https://www.cnblogs.com/brokencolor/p/8125920.html