mysql 安装卸载及使用的问题汇总

linux mysql安装

mysql-community-common-5.7.17-1.el6.x86_64.rpm

 mysql-community-libs-5.7.17-1.el6.x86_64.rpm

mysql-community-client-5.7.17-1.el6.x86_64.rpm

mysql-community-devel-5.7.17-1.el6.x86_64.rpm

mysql-community-server-5.7.17-1.el6.x86_64.rpm 

  • 报错:

原因:已存在mysql-libs-5.1.66-2.el6_3.x86_64的库(这是linux自带的)所以需要先删除以前的库才能安装!

执行命令:

rpm -e mysql-libs-5.1.66-2.el6_3.x86_64 --nodeps 强制卸载!

然后查看:

rpm -qa|grep mysql

  • 报错:

原因:已存在mariadb-libs-5.5.56-2.el7.x86_64的库(这是linux自带的)所以需要先删除以前的库才能安装!

执行命令:

rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 强制卸载!

  • 报错

原因:这是由于yum安装了旧版本的GPG keys造成的        解决办法: --force --nodeps

  • 报错

启动报错

mysql在进行初始化的时后,会检测数据目录是否存在,如过不存在,mysql会创建它, 如果存在,而且这个目录里有数据,mysql会报错,并且终止初始化:

解决方案:

将这个数据目录删掉,或者重命名,如果数据比较重要,建议重命名,后期再重新导入就ok了 
我用的rpm包安装,默认数据目录在 
/var/lib/mysql/

直接删除

rm -fr /var/lib/mysql

完成后,重新启动

 

  • 报错
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

解决方案:

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';

(5.7版本之上
在my.cnf中
在[mysqld]的段中加上一句:skip-grant-tables
skip-grant-tables  的意思是跳过权限验证,
重新启动mysqld,mysql -u root;直接登录
update mysql.user set authentication_string=password('dians#2016') where user='root';)

mysql> FLUSH PRIVILEGES;
mysql> quit
# /etc/init.d/mysql restart
# mysql -uroot -p
Enter password: <输入新设的密码newpassword>
  • 报错

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

修改/etc/my.cnf

添加以下内容到/etc/my.conf:
[client]
socket = /Data/mydata/mysql.sock

  • 报错

ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

解决方案:

SET PASSWORD = PASSWORD('输入新设的密码newpassword'); 

  • 报错

解决方案:

ALTER USER USER() IDENTIFIED BY 'dians#2016';

如果还是报错,可能是密码难度系数不够。

注:密码复杂度修改参考https://www.cnblogs.com/ivictor/p/5142809.html

 

首次启动mysql,root密码会保存在mysqld.log文件中

获取临时密码:

第一次通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码

用该密码登录到服务端后,必须马上修改密码,不然操作查询时报错误

 

远程连接

今天在服务器安装了mysql,准备用mysqlguitools远程登录的时候出错,提示:Host 'xxx' is not allowed to connect to this MySQL server。网上找了一些资料,是mysql未开启mysql远程访问权限导致。

记录解决方案供以后参考。:

1.登录到mysql:  mysql -uroot -ppwd

2.查看user表: 

mysql> use mysql
Database changed
mysql> select host,user,password from user;
+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| localhost    | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

表中host、user字段标识了可以访问数据库的主机和用户。例如上面的数据就表示只能本地主机通过root用户访问。原来如此,难怪远程连接死活连不上。

为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。

第一种(改表法):

修改host字段的值,将localhost修改成需要远程连接数据库的ip地址。或者直接修改成%。修改成%表示,所有主机都可以通过root用户访问数据库。为了方便,我直接修改成%。命令:mysql> update user set host = '%' where user = 'root';

再次查看user表

+------+------+-------------------------------------------+
| host | user | password |
+------+------+-------------------------------------------+
| % | root | *826960FA9CC8A87953B3156951F3634A80BF9853 |
+------+------+-------------------------------------------+
1 row in set (0.00 sec)

修改成功,输入命令mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效,再次远程连接数据库成功。

第二种(授权法):

例如,你想root使用mypassword从任何主机连接到mysql服务器的话。 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 


如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 
'mypassword' WITH GRANT OPTION; 

输入命令mysql> FLUSH PRIVILEGES; 回车使刚才的修改生效,再次远程连接数据库成功。bingo.

别忘记最后的FLUSH PRIVILEGES; 刷新先前的修改。

 

grant all privileges on *.* to 'zabbix'@'%' identified by 'Zabb#3347' with grant option;

all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”zabbix”@”192.168.0.%”
identified by:指定用户的登录密码

grant select ,update on bd_corp to testuser1 [with grant option ]
1.如果带了 with grant option 
那么用户testuser1可以将select ,update权限传递给其他用户( 如testuser2)
grant select,update on bd_corp to testuser2
2.如果没带with grant option
  那么用户testuser1不能给testuser2授权

可以使用GRANT给用户添加权限,权限会自动叠加,不会覆盖之前授予的权限,比如你先给用户添加一个SELECT权限,后来又给用户添加了一个INSERT权限,那么该用户就同时拥有了SELECT和INSERT权限。

 

重启服务

service mysql restart

在终端输入:

mysql -h 服务器ip地址 -P 3306 -u root -p
然后输入密码即可
root是第1点设置的用户名,密码也是第1点设置的密码

第二个有可能的原因也是一个比较低级的错误,我们都知道mysql一创建就默认带一个叫mysql的数据库,如下图所在这里插入图片描述

导出

配置修改修改/etc/my.cnf

datadir=/app/mysql
socket=/app/mysql/mysql.sock
log-error=/app/log/mysqld.log
pid-file=/app/mysqld/mysqld.pid
修改文件夹权限
chmod 777 /app
chmod 777 /app/mysql/
chown -R mysql:mysql /app

mysql卸载

  • 卸载步骤:
  1. rpm -qa|grep -i mysql             #查出的全部删除
  2. 例:rpm -ev MySQL-client-5.5.25a-1.rhel5(这种方式删除了用下面的)
  3. 例:rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps
  4. find / -name mysql               #查出的全部删除
  5. 例:rm -rf /var/lib/mysql
  6. rm -rf /etc/my.cnf
  7. rpm -qa|grep -i mysql             #再查一遍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值