Linux安装MySQL数据库遇到的一些问题
额,其实不算是安装的时候,算是在安装到使用之间的一个状态遇到的问题。
首先安装就不多说了,我这次用的是Ubuntu系统。。。原因不多说了。
不过,本文主要是关于Mysql的问题,跟操作系统关系不大。
首先,如果忘记mysql的密码的话,可以这样登陆:
1.命令:
vim /etc/mysql/my.cnf
注意,这里路径因人而异,重点是编辑my.cnf文件
2.在[mysqld]的段中加上一句:skip-grant-tables
3.重启mysql。(我的操作是:/etc/init.d/mysql restart)
4.这时候,进入MySQL就不再需要密码什么的了,
直接在命令行输入mysql就能进入数据库了。
5.然后是修改新密码
use mysql; UPDATE user SET Password=PASSWORD('123456') WHERE user='root';
然后退出mysql,删掉刚刚在my.cnf上插入的那句话,重启mysql。搞定!
这里有一点要注意,上面的update方法里面,
password=password('123456')的password()方法是不能少的,
因为实际登陆的时候,密码也是会被数据库用这个方法加密,然后验证。
其实还有另外一个修改密码的方法,
命令行输入 /usr/bin/mysql_secure_installation,然后会出现以下输出
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] n
... skipping.
Remove test database and access to it? [Y/n] n
... skipping.
Reload privilege tables now? [Y/n] Y
... Success!
以上方法可以作为参考
再一个,关于mysql用Navicat远程登陆的问题:
首先,mysql默认是不允许远程登陆的,再一个,Linux也没有打开3306端口。
那么解决方案就明了了——打开3306端口号,数据库设置允许远程登陆。
先说打开端口号吧,Ubuntu里面默认安装的iptables是非持久化的,也就是,
重启系统,iptables就会重置。
具体操作,使用命令:
1.apt-get iptables-persistent
2.iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
3.service iptables-persistent save
经过以上三步,应该就打开了3306端口。
然后是数据库设置允许远程登陆
要注意的是,远程登陆的未必要root用户,所以,可以设置个专门的账号
以下都是在mysql里面执行的。
mysql命令:
use mysql;
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
注意,上面的host如果写作%,那么所有IP都能访问,即外部远程访问。
GRANT ALL ON *.* TO 'username'@'host';
上面这句是授权,也就是给username这个用户授权。(授权为ALL)
经过这两步,就大概可以用Navicat登陆数据库了。