阿里云服务器上Mysql5.7安装
1 安装时遇到如下错误:
warning: mysql-community-libs-5.7.21-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
error: Failed dependencies:
mysql-community-common(x86-64) >= 5.7.9 is needed by mysql-community-libs-5.7.21-1.el7.x86_64
mariadb-libs is obsoleted by mysql-community-libs-5.7.21-1.el7.x86_64
原因是centos7中默认安装的是mariadb的libs,与mysql产生了冲突
2 查看:
rpm -qa|grep mariadb
3 刪除:rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
4 开始安装(一定按照顺序安装,因为会有依赖):
rpm -ivh mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.21-1.el7.x86_64.rpm (这里报了错)
这是因为缺少库libaio,所以需要安装libaio
解决方案: 安装libaio-0.3.107-10.el6.x86_64.rpm
下载地址:
http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
安装完成后,即可成功安装MySQL-server-5.5.25a-1.rhel5.x86_64.rpm
5、 数据库初始化
为了保证数据库目录为与文件的所有者为 mysql 登陆用户,如果你的linux系统是以 root 身份运行 mysql 服务,需要执行下面的命令初始化[aaa@qq.com mysql]# mysqld --initialize --user=root此处是你的linux登录用户名
这里演示使用的 --initialize 初始化的,会生成一个 root 账户密码,密码在log文件里,红色的就是自动生成的密码
[aaa@qq.com mysql]# cat /var/log/mysqld.log
2017-06-24T16:47:12.709474Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-06-24T16:47:12.590590Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-06-24T16:47:12.000269Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-06-24T16:47:12.109868Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 960c533e-49fb-11e7-91f2-00163e089fd2.
2017-06-24T16:47:12.116186Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-06-24T16:47:12.116777Z 1 [Note] A temporary password is generated for aaa@qq.com: :qqeftsut3wj
6 安装完毕,但是启动mysql时又产生错误:
查看日志:cat /var/log/mysqld.log
错误信息:
InnoDB: The innodb_system data file 'ibdata1' must be writable
Plugin 'InnoDB' init function returned error.
授权 chmod -R 777 /var即可。
mysql忘记root密码修改
在mysql5.7.10的版本安装好启动程序并没有在操作系统root用户的根目录下面看到一个以点为前缀的带有mysql的文件。
当用命令:
mysql -uroot
- 1
登录时会抛错提示要输入密码。接下来就开始修改root的初始密码。
-
编辑 /etc/my.cnf的mysql配置文件
加入
skip-grant-tables
- 1
保存好配置文件
- 重启mysql服务
命令:
service mysqld start --没有启动过
service mysqld restart --已经在运行重新启动
- 1
- 2
再一次登录:
命令:
mysql -uroot
- 1
登录修改密码:
update user set authentication_string=PASSWORD('sys123') where User='root';
- 1
在修改密码之前要选择mysql数据库。
然后退出登录再次用修改后的原始密码进行登录:
上面修改的密码相当于在mysql安装的时候的初始化的密码变成了我们修改的密码。所以在登录系统后mysql数据库要你修改原始密码:
SET PASSWORD = PASSWORD('sys123'); --这个密码和上面一样也可以是其他的
- 1
因为Linux在安装以后自动启用了密码验证(具体的验证请去mysql官网查看文档文档上面都有详细的说明),不想要就可以取消
再次编辑/ect/my.cnf文档
加入:
validate-password=OFF
- 1
保存重启mysql服务。
再次进行修改:
这样密码修改就成功搞定。
MySqk数据库无法远程连接
远程登陆数据库的时候出现了下面出错信息:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx',
经过今天下午的反复纠结,关于MySql数据库无法远程连接的问题可以归结为以下几点:
1). 没有授予相应的权限:
例如,你想root使用123456从任何主机连接到mysql服务器。
1 |
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root' @ '%' IDENTIFIED BY '123456' WITH GRANT OPTION ; |
1
2
|
mysql> GRANT ALL PRIVILEGES ON *.* TO 'jack' @’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION ; mysql>FLUSH RIVILEGES |
2). 修改mysql数据库中的user表使相应的用户能从某一主机登陆
1
2
3
4
|
mysql -u root –p mysql>use mysql; mysql> update user set host = '%' where user = 'root' ; mysql> select host, user from user ; |
3). 防火墙禁止了3306端口,以iptable为例
vi /etc/sysconfig/iptables ps: iptables设置 |
4). 修改MySQL的配置文件/etc/mysql/my.cnf,因为默认3306端口只允许本地访问的,注释掉这行
#bind-address = 127.0.0.1
然后重启Mysql,/etc/init.d/mysql restart
上一篇: php 删除重复数组元素与空元素代码
下一篇: c3p0引起的死锁如何解决