昨晚想给下学期数据库课的学习,在centos下搭一个实践环境。折腾到1点半差不多吧。先后遇到这几点值得记的地方。
- 首先我是想解决掉root用户密码一直登录不上的问题。按照网上查来的教程,是如下操作:
先用
killall -TERM mysqld
关掉mysql进程。
然后
mysqld_safe --skip-grant-tables &
进入MySQL的安全模式,并跳过授权表检测(不用密码登录)。
然后
mysql
进入mysql命令行。
执行
UPDATE mysql.user SET authentication_string=PASSWORD('new_pwd') WHERE user='root';
修改掉root密码。
相对网上的教程,多加一步:
DELETE FROM mysql.user WHERE user='';
把空用户删除,经自己测试,不加这条语句,修改完成后还是会出现间歇性无法登录的情况。
之后是
FLUSH PRIVILEGES;
QUIT;
把权限设置刷新,之后退出安全模式。
shell下执行:
service mysqld restart
重启MySQL服务。
之后应该能正常使用-u[user_name] -p[pwd]登录root帐号了。
- 记导入sql文件的操作(假设在root用户下,并且sql文件里没有CREATE语句):
CREATE DATABASE [db_name];
新建一个数据库。
USE [db_name];
把当前数据库切换到刚刚建立的数据库上。(如果sql文件里有CREATE语句,从下一步执行就好)
SOURCE [.sql file path];
让数据库从sql文件中获取信息。
SHOW TABLES;
看一下刚才导入的sql文件里含哪些表。
CREATE USER 'user_name'@'host_name' IDENTIFIED BY 'pwd';
新建一个希望用于访问数据库的用户。注意host_name,如果只希望这个用户能本地访问,则填localhost。如果希望能远程登录,则填%。
GRANT [privileges] ON [database_name].[table_name] TO '[user_name]'@'[host_name]';
希望赋予该用户所有操作数据库的权限,则填ALL。数据库名,表名都可以填*,表示赋予操作*代表的所有条目的权限。
FLUSH PRIVILEGES;
刷新权限表。
之后即可使用该用户登录,并对该用户对应的数据库进行操作了。