可通过远程工具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)
grant all on *.* to dba1@'192.168.0.10'identified by "dbapasswd";
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";
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等关键词查询时会提示语法错误,加上反引号`可以解决