Centos 安装mysql问题解决
一、正常安装
我们使用YUM源安装MySql,所以在安装前需要做一下准备工作:
查看下最新的mysql版本 (不需要点击下载)
下载mysql源安装包,从官网可以看到目前(2017.10.23)最新版本是mysql57-community-release-el7-11.noarch.rpm。
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装mysql源 (中间需要输入Y 确认)
yum localinstall mysql57-community-release-el7-11.noarch.rpm
检查源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
如果出现下图则表示源安装成功
如果需要更改安装mysql的版本,则可以修改
/etc/yum.repos.d/mysql-community.repo
源。改变默认安装的mysql版本。比如要安装5.6版本,将5.7源的enabled=1改成enabled=0。然后再将5.6源的enabled=0改成enabled=1即可。改完之后的效果如下所示:
安装mysql(中间需要确定 输入Y)
yum install mysql-community-server
安装完成后,mysql也就安装成功了
安装好后,启动MYSQL服务
systemctl start mysqld
查看mysql启动状态:
systemctl status mysqld
设置开机启动
systemctl enable mysqld systemctl daemon-reload
第一次安装好后,需要修改root本地密码
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改:mysql 语句是分号结束!!!
grep 'temporary password' /var/log/mysqld.log mysql -uroot -p
登陆上之后就可以修改密码了:(下面两种方法都可以)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPassword'; set password for 'root'@'localhost'=password('MyNewPassword');
因为mysql5.7默认安装了安全插件,有一些对密码的校验,所以如果你的密码不符合要求,就会报错,当然如果你只是测试使用 或者自己玩,则可以通过修改密码校验的规则
set global validate_password_policy=0; set global validate_password_length=1;
上面的具体含义可以网上查到。
如果需要设置远程登陆,则需要下面设置
使用root登陆mysql
赋予远程登陆权限
允许root用户在任何地方进行远程登录,并具有所有库任何操作权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; ##然后刷新授权表 FLUSH PRIVILEGES;
允许root用户在一个特定的IP进行远程登录,并具有所有库特定操作权限:
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword"; ##然后刷新授权表 FLUSH PRIVILEGES;
(删除用户授权,需要使用REVOKE命令)
REVOKE privileges ON 数据库[.表名] FROM user-name;
具体实例,先在本机登录mysql:
mysql -u root -p”youpassword”
进行授权操作:
GRANT select,insert,update,delete ON TEST-DB TO test-user@”172.16.16.152” IDENTIFIED BY “youpassword”;
再进行删除授权操作:
REVOKE all on TEST-DB from test-user;
该操作只是清除了用户对于TEST-DB的相关授权权限,但是这个“test-user”这个用户还是存在。
最后从用户表内清除用户:
DELETE FROM user WHERE user=”test-user”;
重载授权表:
FLUSH PRIVILEGES;
退出mysql数据库:
exit
如果此时还不能进行远程登陆,并且用telnet IP 3306 也不成功,则可能是防火墙禁用了3306端口修改防火墙规则,或者如果你只是玩玩或者测试用,则可以关闭防火墙。
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
如果是linux和windows混合使用,则需要设置linux上的mysql不区分大小写
- 用root登录,修改 /etc/my.cnf;
- 在[mysqld]节点下,加入一行: lower_case_table_names=1
- 重启MySQL即可;
如果需要设置utf8 则也需要在上面配置文件中添加一行配置
default-character-set=utf8