1.链接上我们的远程服务器
2.使用yum来下载解析mysql
一、系统环境
yum update升级以后的系统版本为
[root@yl-web yl]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
二、mysql安装
一般网上给出的资料都是
#yum install mysql
#yum install mysql-server
#yum install mysql-devel
安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下:
[root@yl-web yl]# yum install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.sina.cn
* extras: mirrors.sina.cn
* updates: mirrors.sina.cn
No package mysql-server available.
Error: Nothing to do
查资料发现是CentOS 7 版本将MySQL数据库软件从默认的程序列表中移除,用mariadb代替了。
有两种解决办法:
1、方法一:安装mariadb
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
安装mariadb,大小59 M。
[root@yl-web yl]# yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB
systemctl restart mariadb #重启MariaDB
systemctl enable mariadb #设置开机启动
所以先启动数据库
[root@yl-web yl]# systemctl start mariadb
有可能会出现问题:(没有请忽略)当输入命令
# systemctl start mysql.service
要启动MySQL数据库是却是这样的提示
Failed to start mysqld.service: Unit not found
解决方法如下:
首先需要安装mariadb-server
# yum install -y mariadb-server
启动服务
# systemctl start mariadb.service
添加到开机启动
# systemctl enable mariadb.service
进行一些安全设置,以及修改数据库管理员密码(这一步,可能会有问题,稍微休息了一会再试一次就可以了)
# mysql_secure_installation
至此完成!
可以测试一下
# mysql -u root -p
然后就可以正常使用mysql了
[root@yl-web yl]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.41-MariaDB MariaDB Server
Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]>
安装mariadb后显示的也是 MariaDB [(none)]> ,可能看起来有点不习惯。下面是第二种方法。
2、方法二:官网下载安装mysql-server
这里如果下载不下来,或者解压什么的有问题,第一步就把链接先下载本地,然后上传你的服务器目录下,再进行下面两步操作。
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
安装成功后重启mysql服务。
# service mysqld restart
初次安装mysql,root账户没有密码。
[root@yl-web yl]# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.26 MySQL Community Server (GPL)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
mysql>
设置密码
mysql> set password for 'root'@'localhost' =password('password');
Query OK, 0 rows affected (0.00 sec)
mysql>
不需要重启数据库即可生效。
在mysql安装过程中如下内容:
Installed:
mysql-community-client.x86_64 0:5.6.26-2.el7 mysql-community-devel.x86_64 0:5.6.26-2.el7
mysql-community-libs.x86_64 0:5.6.26-2.el7 mysql-community-server.x86_64 0:5.6.26-2.el7
Dependency Installed:
mysql-community-common.x86_64 0:5.6.26-2.el7
Replaced:
mariadb.x86_64 1:5.5.41-2.el7_0 mariadb-devel.x86_64 1:5.5.41-2.el7_0 mariadb-libs.x86_64 1:5.5.41-2.el7_0
mariadb-server.x86_64 1:5.5.41-2.el7_0
所以安装完以后mariadb自动就被替换了,将不再生效。
[root@yl-web yl]# rpm -qa |grep mariadb
[root@yl-web yl]#
三、忘记mysql的密码是解决办法
方法一、找回安装是的初始密码:
1、grep 'temporary password' /var/log/mysqld.log
方法二、使用操作系统账号和密码,进行修改密码
1、mysql -uroot -p
2、输入你的centos的密码
3、UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword') WHERE User = 'root' AND Host = 'localhost';
注:如果显示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,说明你的密码不符合安全要求,
4、FLUSH PRIVILEGES;
5、quit;
方法三、强制进行修改密码
1、systemctl stop mysqld
2、systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
3、systemctl start mysqld
4、mysql -u root
5、UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword') WHERE User = 'root' AND Host = 'localhost';
注:如果显示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements,说明你的密码不符合安全要求,
6、FLUSH PRIVILEGES;
7、quit;
四、使用 Naviat premium链接数据库问题
1.如果你有sql文件,需要导入,可先安装一个上传文件的工具lrzsz或者ftp(这里我用的是lrzsz),顺便下载一个解压缩的工具unzip zip
//安装解压缩工具
#yum install -y unzip zip
//安装rz,sz上传和下载工具
#yum install lrzsz
2,在一个特定的文件目录(如果自定义可以使用mkdir创建对应的文件夹)
(我的文件目录:/usr/develop/)
使用:#rz
选择我们的sql文件库地址,提交上传我们导出的库文件数据
3.然后使用:#mysql -u root -p (然后输入我们的sql密码,开启数据库访问) 导入数据库
(1)首先建空数据库
mysql>create database abc;
(2)导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < (刚才上传的sql路径)+数据库名.sql
mysql -uabc_f -p abc < /usr/develop/abc.sql
4.建立连接出现的问题:
(1)本地navicat连接centos7服务器mysql失败,2003-Can't connect to MySQL server on '47.97.13.104'(10038)
解决:服务器端3306端口未开放,需要在云服务器管理控制台的服务器实例的安全组中添加安全组规则,把MySQL的3306端口添加进去。
(2)测试链接通过,然后在点击打开数据库连接的时候错误提示:Table ‘performance_schema.session_variables’ doesn’t exist
解决:
解决的方法是:
mysql_upgrade -u root -p --force
第二步:重新启动mysql的服务:(找到你的mysql.service)
/bin/systemctl restart mysqld.service
然后建立连接,完成打开查看数据
五、分配权限问题
1.首先进入数据库。
2.创建用户
//CREATE USER 'user1'@'%' IDENTIFIED BY '07fa533360d9';
//创建用户
'%' - 所有情况都能访问
‘localhost’ - 本机才能访问,localhost不会被解析成IP地址,直接通过UNIXsocket连接
’111.222.33.44‘ - 指定 ip 才能访问
127.0.0.1 会通过TCP/IP协议连接,并且只能在本机访问;
::1 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
3.修改密码
update mysql.user set password=password('新密码') where user='user1';
这里由于我是上面的强制修改登录密码的,这里有所不同(password换成authentication_string)
update mysql.user set authentication_string=PASSWORD('新密码') where user='user1';
4.给该用户添加权限(不同用户登陆只能看到的数据库内容也是不一样的)
grant all privileges on 想授权的数据库.* to 'user1'@'%';
all 可以替换为 select,delete,update,create,drop
//删除权限
revoke all privileges on 想要撤销的数据库database.* from 'user1'@'%';
5.删除用户
1.drop
drop user XXX;删除已存在的用户,默认删除的是'XXX'@'%'这个用户,如果还有其他的用户如'XXX'@'localhost'等,不会一起被删除。如果要删除'XXX'@'localhost',使用drop删除时需要加上host即drop user 'XXX'@'localhost'。
delete
delete from user where user='XXX' and host='localhost';其中XXX为用户名,localhost为主机名。
区别
drop不仅会将user表中的数据删除,还会删除其他权限表的内容。而delete只删除user表中的内容,所以使用delete删除用户后需要执行FLUSH PRIVILEGES;刷新权限,否则下次使用create语句创建用户时会报错。
2.//删除单纯某个表中的某个数据
Delete FROM mysql.user Where User='user1';
6.可能遇到的问题
flush privileges;
在操作 mysql 库做用户的增删修改的时候,操作完毕的时候最好使用 flush privileges 命令刷新一下权限。否则可能会修改不生效。
遇到的Navicat Premium链接问题:
1.Navicat for Mysql远程连接数据时报(1045错误)Access denied for user 'root'@'IpAdress' (using password yes);
解决:用户访问被拒绝,使用上面的更改相应的用户赋予密码即可。使用密码登录。
2.Navicat for Mysql远程连接数据时报(1045错误)Access denied for user 'root'@'IpAdress' (using password yes);
解决:这个错误里面的ip地址跟我通过ipconfig出来的ip地址不一样,然后我们需要将我们的sql语句修改,重新授权了一下,ip地址改成了错误中提到的ip地址
grant all on *.* to 'root'@'链接提示的地址名称' identified by '你的根sql账户密码';
然后flush privileges刷新权限即可。