上传到Linux中:
使用的工具为EditPlus:用于上传文件。
上传文件地址自定义:我使用的是 /use/local/下
通过mkdir 创建mysql文件夹:通过EditPlus连接linux找到这个文件夹把mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar上传到linux中
解压安装:
1.解压
上传到自己创建的文件夹中并且解压
通过:tar -xvf mysql-5.7.9-1.el7.x86_64.rpm-bundle.tar
解压后有好多文件但是我们只需要安装4个rpm包,后面会讲解。
2. 通过命令查询本机是否安装mysql,如果有则需要删除,以免起冲突
查询:rpm -qa|grep -i mysql
删除:rpm -e mysql版本 --nodeps
3. 通过rpm安装
mysql解压后有很多rpm的包我们只需要安装4个
安装:rpm -ivh mysql包名称 --force --nodeps
4. 接下来是初始化数据库
我们使用如下几条命令均可,效果都是一样的:
mysql_install_db –datadir=/usr/local/mysql/lib
//必须指定datadir,执行后会生成~/.mysql_secret密码文件mysqld –initialize
//新版的推荐此方法,执行生会在/var/log/mysqld.log生成随机密码
5. 更改mysql数据库目录的所属用户及其所属组,然后启动mysql数据库:
chown mysql:mysql /usr/local/mysql/lib -R systemctl start
mysqld.service //启动mysql数据库服务
- 根据查看初始密码 中的密码登录到mysql,更改root用户的密码,新版的mysql在第一次登录后更改密码前是不能执行任何命令的
查看初始密码
- grep ‘temporary password’ /var/log/mysqld.log
- cat /root/.mysql_secret
通过cat /root/.mysql_secret 查看登录密码
通过密码登录但是提示错误拒绝访问root但是后面的password显示yes证明密码正确(输入密码时是不显示的)
解决方案:
1.密码重置:
vi /etc/my.cnf
在[mysqld]下加上 skip-grant-tables,如
重启mysql服务: service mysqld restart
登陆mysql后就可以修改密码了:mysql -u root
更新用户密码:
update mysql.user set authentication_string=PASSWORD('修改的密码') where User='用户名称';
刷新权限:
flush privileges;
如果进入数据库运行数据库语句出现:
You must reset your password using ALTER USER statement before
executing this statement
(意思是:在执行此语句之前,您必须使用ALTERUSER语句来重置密码)
通过set password=password(密码);
这样就解决了
数据库恢复到Linux的数据库中:
通过Navicat 15 for Mysql恢复:连接到linux的服务器
连接出现问题:
- 改表法:可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”
步骤:
登录服务器的mysql:mysql -u root -p密码
选择库:use mysql;
更改库中的用户:update user set host = '%' where user = 'root';
查询用户host和user的情况:select host, user from user;
- 授权法:例如,你想 myuser:用户名称,使用mypassword:用户密码,从任何主机连接到mysql服务器的话。
步骤
给用户权限:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
(给这个用户可以在任何ip通过指定的密码访问,并且拥有所有权限给的是ALL,可以操作任何数据库和表因为给了*.*)
刷新权限:FLUSH PRIVILEGES;
解决方案:
我们创建一个用户可以在任何ip下访问linux的数据库,又为了数据库安全我们创建一个my用户,只能对hnkr库下的所有表进行增删改查权限。
步骤:
1. 创建用户(并且直接设置成所有ip都可以登录)
#my表示你要建立的用户名,后面的123表示密码,
#localhost限制在固定地址localhost登陆,‘%’任何ip都可以登录
CREATE USER my@localhost IDENTIFIED BY ‘123456’;
创建完成后,在通过软件连接
可以看出已经连接成功,并且还有一个库,我们现在创建hnkr库会报错,原因是没有给该用户添加表的权限
解决:
登录root用户创建hnkr并且把控制权给my用户
2. 授权用户表权限
grant all privileges ON databasename.tablename TO 'username'@'host' identified by '用户密码' with grant option;
说明: privileges – 用户的操作权限,如SELECT , INSERT , UPDATE 等。如果要授予所的权限则使用 ALL;
databasename – 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如 * . *
例如:
给用户添加权限:grant all privileges on hnkr.* to 'my'@'%' identified by '123456' with grant option;
(这个的意思是:给my用户增删改查的权限,但是只能对hnkr库下的表才能有这个权限,需要访问其他库那么就没有权限)
刷新权限:flush privileges;
接着回到软件刷新数据库,已经显示hnkr库
点击库右键选择运行sql文件,选择自己想要恢复的sql文件
可以看出已经在恢复数据库
3. 设置与更改用户密码
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword')
#如果是当前登陆用户
SET PASSWORD = PASSWORD("newpassword");
#例如:
SET PASSWORD FOR 'foo'@'%' = PASSWORD("123456");
#更新用户的密码并且用户名称是phplam和主机为localhost的用户(一般root使用这个更改其他用户)
update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
问题:Linux的mysql表中不存在的问题:
在CentOS安装的MySQL的配置文件中(/etc/my.cnf),是没有lower_case_table_names=1这行的。
在Windows安装的MySQL的配置文件中(my.ini),是有lower_case_table_names=1这行的。
lower_case_table_names=1的用途是让MySQL实现不区分大小写。
所以当时出了些毛病,后来才发现是这个的问题。连忙在CentOS中的my.cnf(/etc/my.cnf)的[mysqld]区段下增加:
lower_case_table_names=1
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83899.html