可通过远程工具navicat连接或在app服务器安装目录下运行mysql -u root -p

linux安装准备和一些报错:

1.安装数据库

下载mysql源:wget http://repo.mysql.com/mysql80-community-release-el7-1.noar

ch.rpm

或者无网络访问http://repo.mysql.com手动下载

ls查看安装包

安装mysql源

yum -y install mysql80-community-release-el7-1.norch.rpm

//yum install 和rpm -ivh都可进行安装,此时两者实质是一样的

安装mysql数据库

yum -y install mysql-community-server

service mysqld start

service mysqld start

linux报错总结:

yum -y install mysql-community-server安装数据库报错。解决方法:yum -y install mysql-community-server --nogpgcheck

2.远程连接配置

首先,修改配置文件my.cnf,windows为my.ini,修改数据库安装包内配置文件my.cnf注释掉#bind-address=127.0.0.1

然后,修改数据库

update user set host="%" where user ="root";

可能会提示:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'不予理会,之后刷新权限,重启数据库即可进行远程连接。

select host, user from user;

root用户有%就允许root用户远程登录

flush privileges

必须刷新权限,之后要重启数据库,不重启数据库否则会只有一个数据库,如下:

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

报socket错修改根目录文件/etc/my.cnf,先查看app安装文件内mysql数据库的配置文件my.cnf内的sock,添加到/etc/my.cnf

此问题还有另外一个解决方法:给找不到的文件建立一个软链接,软链接于app服务器的my.cnf配置文件里的socket地址

ln -s my.cnf已知sock地址  /var/lib/mysql/mysql.sock

 4.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

密码报YES错可以修改数据库内配置文件my.cnf忽略密码

进入mysql安装目录

    编辑my.cnf

    在[mysqld]下添加skip-grant-tables,保存立即生效。

可以再修改数据密码重新登录即可解决

修改密码举例:

mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';

5.

 上面这个问题是安装完成后,直接输入mysql,不用输入密码能直接登录,但是登陆后只能看见一个库information_schema

解决方法:先修改配置文件忽略密码,在[mysqld]下添加skip-grant-tables,重启mysql服务,再登录,show databases;可以看到全部三个库。还原文件,又只剩一个库了。

这个问题原因是新建一个数据库用户,即新建了一个数据库实例,只有一个库

 6.新建数据库实例,其他应用程序调用数据库,进行初始化

  • 新建用户

              使用 CREATE USER 创建一个用户,用户名是 test1,密码是 test1,主机名是 localhost。SQL 语句和执行过程如下。

mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1';
Query OK, 1 rows affected (0.06 sec)

在 MySQL 中,可以使用 password() 函数获取密码的哈希值,查看 test1 哈希值的 SQL 语句和执行过程如下:

mysql> SELECT password('test1');
+-------------------------------------------+
| password('test1')                         |
+-------------------------------------------+
| *06C0BF5B64ECE2F648B5F048A71903906BA08E5C |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

“*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下:

mysql> CREATE USER 'test1'@'localhost'IDENTIFIED BY PASSWORD '*06C0BF5B64ECE2F648B5F048A71903906BA08E5C';
Query OK, 0 rows affected, 1 warning (0.00 sec)
  • 新建数据库

            create database testdb default charset="gbk";

  •     开放数据库权限

 (用户名:dba1,密码:dbapasswd,登录IP:192.168.0.10)

 
//开放管理MySQL中所有数据库的权限
grant all on *.* to dba1@'192.168.0.10'identified by "dbapasswd";
 
//开放管理MySQL中具体数据库(testdb)的权限
grant all privileges on testdb to dba1@'192.168.0.10'identified by "dbapasswd";

grant all on testdb to dba1@'192.168.0.10'identified by "dbapasswd";

//开放管理MySQL中具体数据库的表(testdb.table1)的权限
grant all on testdb.teable1 to dba1@'192.168.0.10'identified by "dbapasswd";
 //授权远程访问
grant all on *.* to dba1@'%'identified by "dbapasswd";
必须刷新权限

flush privileges;

  • 重启计算机或重启数据库(注意必须重启,否则不能初始化)

7.ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

mysql> select user,host from user;

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| admin            | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| zhangj           | localhost |
+------------------+-----------+

注意我的 root,host是'%'

你执行的是:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

改成:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';

8.mysql8权限问题

1.今天刚装了mysql8.0.13,试着分配几个账号和权限,结果报错:

2. 查资料得知mysql8的分配权限不能带密码隐士创建账号了,要先创建账号再设置权限

mysql> create user 'test‘@’%' identified by '12345';
mysql> grant all privileges on *.* to 'test'@'%';
mysql> flush privileges;

又报错:You are not allowed to create a user with GRANT ;

不允许使用grant命令,怎么会没权限,奇怪。

3.后来想到了mysql数据表user中的host

于是修改host:update user set host='%' where user='test';

再执行两次

 Grant all privileges on *.* to 'test'@'%';

成功

但连接Navicat报错

 

这是因为mysql8的加密方式和Navicat不一样

4.修改加密方式:alter user test identified with mysql_native_password by 'xxx';

                    或     update user set plugin'mysql_native_password' where user'root';

9.

 

 

mysql跳过权限: mysqld -nt --skip-grant-tables opt

登录:mysql -uroot -p

修改root密码 set password for 'root'@'localhost' = password('新密码');

报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables opt

原因:权限没有刷新

解决:flush privileges

其他mysql8.0相关问题:

1.mysqld –skip-grant-tables 命令失效

在修改密码过后,发现新旧密码都登录不上mysql数据库,在网上搜到好几篇相同的教程,即使用mysqld –skip-grant-tables命令实现免密码登录,但是尝试了几次都无效,这是由于mysql8.0以后的版本mysqld –skip-grant-tables命令已经失效需要使用新命令:

mysqld --console --skip-grant-tables --shared-memory

建议直接修改配置文件,在[mysqld]后面添加skip-grant-tables,然后重启mysql服务,直接免密登录,亲测可行

2.ERROR: The MySQL server is running with the --skip-grant-tables option so it cannot execute

免密码登录成功后,修改密码时又报错,需要先刷新mysql然后再重新修改密码,同第9个问题

flush privileges;
3 ERROR: 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost
继续执行修改密码的程序:

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'
仍然报错,问题是mysql中user表中显示host是%号,所以这里的localhost 更换成%即可

ALTER USER 'root'@'%' IDENTIFIED BY '123456'

 

 

 

 

windows安装报错问题

net start/stop mysql 

1.

 

 到MySQL的安装目录下找到my.ini,用编辑器打开,找到default-storage-engine=INNODB,将INNODB修改为MYISAM,修改引擎

再启动服务即可net start mysql

2.

 

打开mysql安装目录, 在配置文件mysql.ini的后面添加一行:

skip-grant-tables

重启mysql服务即可生效net restart mysql

 3.关于cmd命令提示符问题

 

上述报错输入set names gbk;即可解决。cmd的问题,navicate可以增加数据。

4.服务无法启动,启动出错,cmd命令提示符以管理员身份打开

 

其他错误:

 gruop等关键词查询时会提示语法错误,加上反引号`可以解决

posted on 2022-05-10 00:13  阿吉啊  阅读(145)  评论(0编辑  收藏  举报