今天本地安装hive时需要进入sql即#mysql -uroot -p遇到很多问题解决方法如下
1.解决MySQL ERROR 1130 (HY000): Host XXXX is not allowed to connect to this MySQL server
问题现象:使用mysql远程登录命令mysql –uroot –p时,报错MySQL ERROR 1130 (HY000): Host 'XXXX' is not allowed to connect to this MySQL server
问题原因:mysql服务器出于安全考虑,默认只允许本地登录数据库服务器。
问题解决:登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%",然后重启mysql这样就允许所有的远程机器进行访问了。
步骤1:修改mysql表
mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
mysql>select host, user from user;
mysql>quit
步骤2:重启mysql
方法1:在windows设置中找到“查看本地服务”,找到mysql服务,重启mysql服务
这个方法需要本地登录数据库,很不方便
2.mysql_install_db is deprecated. Please consider switching to mysqld --initialize
解决:需要使用mysqld来初始化
./mysqld --initialize --datadir=/usr/local/mysql-cluster/data --user=mysql --basedir=/usr/local/mysql-cluster
在安装mysql时遇到以下错误
执行./mysqld --initialize 后
./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因是没有安装libaio.so.1,安装即可。
Ubuntu下执行:
apt-get install libaio1 libaio-dev
Redhat/Fedora/CentOS下执行:
yum install libaio
这个方法还是出现错误
3.首先是启动MySQL服务的时候:
/etc/init.d/mysql start
遇到问题如下:
bash: /etc/init.d/mysql start: No such file or directory
然后在网上google了一堆解决方法,挨个测试,但是都没有解决。其中还遇到问题如下:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
解决方法:运行下面的命令:
mysql_install_db
chown -R mysql.mysql /var/lib/mysql
以后就这样启动mysqld服务了: mysql -u root -p
mysql依然启动失败
4.ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
mac上用homebrew安装mysql步骤:
1)brew install mysql(默认安装mysql8)
安装完成后:启动mysql服务
2)bash mysql.server start
这个时候用navicat 连接会报错2059 Authentication plugin 'caching_sha2_password' cannot be loaded
这是因为新版mysql数据库的加密方式变了:
3)录数据库 mysql -u root -p
mysql> use mysql;
4)通过命令 select user,plugin from user where user='root'; 我们可以发现加密方式是caching_sha2_password
5)mysql> select user,host from user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| admin | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| zhangj | localhost |
+------------------+-----------+
注意我的root,host是'%'
6)然后使用命令:alter user 'root'@'%' identified with mysql_native_password by 'your password';
执行这个语句时如果报错“ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'”,就执行第6步,如果没报错就走第7步
7)保留当前窗口,新打开一个窗口,重新进入mysql,执行该命令就可以了
再次查看,就发现加密方式已经更改:
8)接着找到my.cnf文件(不知道目录的可以通过brew list mysql来确定目录)并加上加密方式:
default_authentication_plugin=mysql_native_password
9)保存后,重启mysql服务命令:mysql.server restart
这个方法可以使用
5.MySQL5.7更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'
新安装的MySQL5.7,登录时提示密码错误,安装的时候并没有更改密码,后来通过免密码登录的方式更改密码,输入update mysql.user set password=password('root') where user='root'时提示ERROR 1054 (42S22): Unknown column 'password' in 'field list',原来是mysql数据库下已经没有password这个字段了,password字段改成了
authentication_string
所以更改语句替换为update mysql.user set authentication_string=password('root') where user='root' ;完整的更改MySQL密码的方式如下:
1)vim /etc/my.cnf 加入skip-grant-tables
2)重启MySQL, /etc/init.d/mysqld restart
3)终端输入 mysql 直接登录MySQL数据库,然后use mysql
4)update mysql.user set authentication_string=password('root') where user='root' ;
mysql5.7更改密码应该采用命令 ALTER USER 'root'@'localhost'IDENTIFIED BY '********'其中密码的命名规则有所改变,详见
http://blog.csdn.net/u010603691/article/details/50541979
5)编辑my.cnf文件删掉skip-grant-tables 这一行,然后重启MySQL,/etc/init.d/mysqld restart,否则MySQL仍能免密码登录
6)mysql -u root -p然后输入密码即可登录MySQL数据库
这个方法还是启动不了
6、解决ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在登录mysql输入密码后出现如下问题:
一般是密码错误引起,解决的办法是重置密码
重置密码的第一步就是跳过MySQL的密码认证过程
查找my.cnf文件的位置
find -name my.cnf
我的文件位置是 ./etc/my.cnf
打开my.cnf文件
vim /etc/my.cnf
找到[mysqld],在它的后面任意下一行添加如下代码
skip-grant-tables
保存退出
:wq
然后重启mysql,命令如下:
/etc/init.d/mysqld restart (我找不见这个文件目录)
输入mysql
用sql来修改root的密码
在mysql数据库有一个user表,存储的是数据库用户的信息,我们需要修改的里面用户的密码;
show databases;
命令依次为:
#use mysql;(使用mysql数据库)
#update user set password=password("你的密码") where user="root";
#flush privileges;
#quit
root账户就已经重置成新的密码了
编辑my.cnf,去掉刚才添加的内容,然后重启MySQL
7.在启动mysql时,执行service mysqld start
报错,不能进入Mysql
执行systemctl restart mysqld.service
成功进入!(很多方法就这个成功了)然后执行第六个问题修改密码部分就可以,然后退出mysql使用#mysql -uroot -p (输入修改密码)